CFA633-YYH-KS [CRYSTAIFONTZ]
INTELLIGENT LCD MODULE;型号: | CFA633-YYH-KS |
厂家: | Crystalfontz America, Inc. |
描述: | INTELLIGENT LCD MODULE CD |
文件: | 总73页 (文件大小:2654K) |
中文: | 中文翻译 | 下载: | 下载PDF数据表文档文件 |
Crystalfontz
INTELLIGENT LCD MODULE SPECIFICATIONS
Datasheet Release 2017-09-29
for
CFA633-YYH-KS
Hardware Version: v2.1
Firmware Version: s2.2
Crystalfontz America, Inc.
12412 East Saltese Avenue
Spokane Valley, WA 99216-0357
Phone: 888-206-9720
Fax: 509-892-1203
Email: support@crystalfontz.com
URL: www.crystalfontz.com
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Table of Contents
1. General Information................................................................................................................................6
2. Introduction .............................................................................................................................................7
2.1. Comparison to CFA533......................................................................................................................7
2.2. Main Features ....................................................................................................................................7
2.3. Module Classification Information......................................................................................................8
2.4. Ordering Information ..........................................................................................................................8
2.5. Drive Bay Mounting Bracket ..............................................................................................................9
2.6. Cables ..............................................................................................................................................10
3. Mechanical Characteristics..................................................................................................................11
3.1. Physical Characteristics...................................................................................................................11
3.2. Jumper Locations and Functions (All Interfaces).............................................................................11
4. Optical Characteristics.........................................................................................................................14
4.1. Definition of Viewing Angles ............................................................................................................14
5. Electrical Specifications.......................................................................................................................15
5.1. System Block Diagram.....................................................................................................................15
6. Supply Voltages and Current...............................................................................................................16
6.1. Absolute Maximum Ratings .............................................................................................................16
6.2. DC Characteristics ...........................................................................................................................16
6.3. “12v” Fan/GPO Characteristics........................................................................................................16
6.4. GPIO[0] – GPIO[4] Characteristics ..................................................................................................17
6.5. RS-232 Characteristics ....................................................................................................................18
6.6. LED Backlight Information................................................................................................................18
7. Connection Information........................................................................................................................19
7.1. Standard Power Connection ............................................................................................................19
7.2. Connecting 5v Power.......................................................................................................................19
7.3. Connecting 12v Power for Fans.......................................................................................................20
7.4. Ground Connections ........................................................................................................................21
8. ATX Power Supply and Control Connections ....................................................................................22
9. RS-232 Connections .............................................................................................................................25
10. Fan Connections.................................................................................................................................26
10.1. Connect Optional Crystalfontz WR-DOW-Y17 Temperature Sensors ..........................................28
Page | 2
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
11. Host Communications........................................................................................................................29
11.1. Packet Structure.............................................................................................................................29
11.2. About Handshaking........................................................................................................................30
11.3. Report Codes .................................................................................................................................30
0x80: Key Activity............................................................................................................................30
0x81: Fan Speed Report.................................................................................................................31
0x82: Temperature Sensor Report..................................................................................................31
11.4. Command Codes ...........................................................................................................................32
0 (0x00): Ping Command ................................................................................................................32
1 (0x01): Get Hardware & Firmware Version..................................................................................32
2 (0x02): Write User Flash Area......................................................................................................33
3 (0x03): Read User Flash Area .....................................................................................................33
4 (0x04): Store Current State as Boot State ...................................................................................33
5 (0x05): Reboot CFA633, Reset Host, or Power Off Host ............................................................34
6 (0x06): Clear LCD Screen............................................................................................................35
7 (0x07): Set LCD Contents, Line 1 ................................................................................................36
8 (0x08): Set LCD Contents, Line 2 ................................................................................................36
9 (0x09): Set LCD Special Character Data.....................................................................................36
10 (0x0A): Read 8 Bytes of LCD Memory.......................................................................................37
11 (0x0B): Set LCD Cursor Position ...............................................................................................37
12 (0x0C): Set LCD Cursor Style....................................................................................................37
13 (0x0D): Set LCD Contrast ..........................................................................................................38
14 (0x0E): Set LCD & Keypad Backlight.........................................................................................38
15 (0x0F): (Deprecated)..................................................................................................................38
16 (0x10): Set Up Fan Reporting ....................................................................................................38
17 (0x11): Set Fan Power ...............................................................................................................39
18 (0x12): Read DOW Device Information .....................................................................................39
19 (0x13): Set Up Temperature Reporting......................................................................................40
20 (0x14): Arbitrary DOW Transaction............................................................................................42
21 (0x15): Set Up Live Fan or Temperature Display ......................................................................42
22 (0x16): Send Command Directly to the LCD Controller.............................................................43
23 (0x17): Configure Key Reporting ...............................................................................................43
24 (0x18): Read Keypad, Polled Mode...........................................................................................44
25 (0x19): Set Fan Power Fail-Safe................................................................................................44
26 (0x1A): Set Fan Tachometer Glitch Filter ..................................................................................45
27 (0x1B): Query Fan Power & Fail-Safe Mask..............................................................................46
28 (0x1C): Set ATX Power Switch Functionality.............................................................................46
29 (0x1D): Enable/Disable and Reset the Watchdog .....................................................................49
30 (0x1E): Read Reporting & Status...............................................................................................49
31 (0x1F): Send Data to LCD..........................................................................................................50
32 Reserved for CFA631 Key Legends ..........................................................................................50
33 (0x21): Set Baud Rate................................................................................................................50
34 (0x22): Set or Set and Configure GPIO Pins .............................................................................50
35 (0x23): Read GPIO Pin Levels and Configuration State............................................................52
12. Character Generator ROM (CGROM) ................................................................................................54
13. LCD Module Reliability and Longevity..............................................................................................55
13.1. Module Longevity (EOL / Replacement Policy)..............................................................................55
14. Care and Handling Precautions.........................................................................................................56
14.1. ESD (Electrostatic Discharge)........................................................................................................56
Page | 3
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
14.2. Design and Mounting......................................................................................................................56
14.3. Avoid Shock, Impact, Torque, or Tension......................................................................................56
14.4. If LCD Panel Breaks.......................................................................................................................56
14.5. Cleaning .........................................................................................................................................56
14.6. Operation .......................................................................................................................................57
14.7. Storage and Recycling...................................................................................................................57
15. Mechanical Drawings..........................................................................................................................58
16. Appendix A: Demonstration Software and Sample Code...............................................................62
Page | 4
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Table of Figures
Figure 1. Bracket (Black Overlay with Logo).................................................................................................9
Figure 2. CFA633 HW v2.1 Jumper Locations and Functions....................................................................11
Figure 3. Definition of 6:00 o'clock and 12:00 o'clock Viewing Angles .......................................................14
Figure 4. System Block Diagram.................................................................................................................15
Figure 5. 5v Power Connection Option.......................................................................................................19
Figure 6. 12v Power Connection Option.....................................................................................................20
Figure 7. 12v Power Connection Option.....................................................................................................21
Figure 8. ATX Power Supply and Control Connections..............................................................................22
Figure 9. ATX Power Supply and Control Using Crystalfontz WR-PWR-Y14 Cable ..................................23
Figure 10. Default and Alternate RS232 Pin Assignments.........................................................................25
Figure 11. Four Fan Connectors.................................................................................................................26
Figure 12. Graph Showing Fan PWM Power (% on time) for Various Fan RPM........................................27
Figure 13. J_DOW Connection for WR-DOW-Y17 Temperature Sensor ....................................................28
Figure 14. Character Generator ROM (CGROM) .......................................................................................54
Page | 5
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
1. General Information
Datasheet Revision History
Datasheet Version: 2017-09-29
Hardware Version: v2.1
Firmware Version: s2.2
This datasheet has been updated to reflect hardware version v2.1, firmware s2.2 for the CFA633-YYH-KS LCD
module.
For information about firmware and hardware revisions, see the Part Change Notifications (PCNs) under “News”
in our website’s navigation bar. To see the most recent PCN for the CFA633 family at the time of this datasheet
release, see PCN #10730.
Previous datasheet Version: 2012-02-21
For reference, previous datasheets may be downloaded by clicking the “Show Previous Versions of Datasheet”
link under the “Datasheets and Files” tab of the product web page.
Product Change Notifications
To check for or subscribe to “Part Change Notices” for this display module, see the Product Notices tab on the
product’s webpage.
Variations
Slight variations (for example, contrast, color, or intensity) between lots are normal.
Volatility
This display module has volatile memory.
Disclaimer
Certain applications using Crystalfontz America, Inc. products may involve potential risks of death, personal
injury, or severe property or environmental damage (“Critical Applications”). CRYSTALFONTZ AMERICA, INC.
PRODUCTS ARE NOT DESIGNED, INTENDED, AUTHORIZED, OR WARRANTED TO BE SUITABLE FOR
USE IN LIFE-SUPPORT APPLICATIONS, DEVICES OR SYSTEMS OR OTHER CRITICAL APPLICATIONS.
Inclusion of Crystalfontz America, Inc. products in such applications is understood to be fully at the risk of the
customer. In order to minimize risks associated with customer applications, adequate design and operating
safeguards should be provided by the customer to minimize inherent or procedural hazard. Please contact us if
you have any questions concerning potential risk applications.
Crystalfontz America, Inc. assumes no liability for applications assistance, customer product design, software
performance, or infringements of patents or services described herein. Nor does Crystalfontz America, Inc.
warrant or represent that any license, either express or implied, is granted under any patent right, copyright, or
other intellectual property right of Crystalfontz America, Inc. covering or relating to any combination, machine, or
process in which our products or services might be or are used.
All specifications in datasheets on our website are, to the best of our knowledge, accurate but not guaranteed.
Corrections to specifications are made as any inaccuracies are discovered.
Company and product names mentioned in this publication are trademarks or registered trademarks of their
respective owners.
Copyright © 2017 by Crystalfontz America, Inc.,12412 East Saltese Avenue, Spokane Valley, WA 99216
U.S.A.
Page | 6
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
2. Introduction
2.1. Comparison to CFA533
If your project does not need the fan connections, the CFA533 family is an economical replacement
for the CFA633 family. The CFA533 can be used in 3.3v or 5v systems, where the CFA-633 is limited
to 5v systems.
2.2. Main Features
•
16 characters x 2-lines LCD with keypad and high-level interface. The display will fit nicely in a 1U
rack mount case (35 mm overall height).
•
A single 5v supply is needed for micro-controller, backlight, and LCD. Supplying the optional 12v will
allow control of 4 fans.
•
•
•
Four fan connectors with RPM monitoring and variable fan power control (PWM).
A fail-safe fan power setting allows safe host fan control based on temperature.
“Live Display” shows up to eight temperature or fan readings without host intervention, allowing fan
RPMs and temperatures to be shown immediately at boot, even before the host operating system is
loaded.
•
Adjustable, long-life backlights are driven from the 5v supply at constant current. Their brightness is
independent of power supply variations.
•
•
•
•
Bidirectional “full-duplex” 19200 / 115200 baud ESD-protected RS-232 interface (-KS versions).
Robust packet based communications protocol with 16-bit CRC.
Module has a 6 o’clock viewing direction. Please see Optical Characteristics.
Integrated, LED-backlit, 6-button translucent silicon keypad has four directional arrows, Enter, and
Cancel.
•
•
•
Edge-lit white LED backlight with negative STN blue transmissive mode LCD. Display shows light
characters on a deep blue background.
The display can be read in normal office lighting and in dark areas. May be difficult to read in direct
sunlight.
Nonvolatile memory capability (EEPROM): Set the “power on” display screen, plus 16-bytes for
storing IP, netmask, system serial number, or other data.
•
•
These options can be added to your display after clicking on the “Customize and Add to Cart” button:
ATX power supply control functionality allows the keypad buttons on the CFA633 to replace the
Power and Reset switches on your system, simplifying front panel design. The ATX functionality can
also implement a hardware watchdog that can reset host system on host software failure.
Temperature monitoring: up to 32 channels at 0.5-degree Celsius absolute accuracy (using optional
connector and Crystalfontz WR-DOW-Y17 cables.
•
•
An optional 5.25-inch half-height drive bay kit with mounting bracket is available. See CFA633 Kit
Configurator.
•
•
Crystalfontz America, Inc. is ISO 9001:2008 certified.
A Declaration for Conformity, RoHS, and REACH:SVHC are available under the Datasheets & Files
tab on display web pages.
Page | 7
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
2.3. Module Classification Information
Brand
Crystalfontz America, Inc.
Model Identifier
Backlight Type & Color
633
Y – LED, yellow-green
Fluid Type, Image (positive or negative), & LCD Glass
Color
Y – STN, positive yellow-green
Polarizer Film Type, Temperature Range, &
View Angle (O ‘Clock)
H – Transmissive, Wide Temperature
Range1, 6:00
Special Code 1
Interface
K – Manufacturer’s code
S – Serial interface with full swing RS-232
1 Wide Temperature Range is -20°C minimum to +70°C maximum.
2.4. Ordering Information
LCD
PART NUMBER FLUID GLASS
COLOR
POLARIZER
FILM
IMAGE
BACKLIGHT COLOR/TYPE
CFA633-YYH-KS
(“full swing”
RS- 232)
LCD: yellow-green edge LEDs
Keypad: yellow-green LEDs
STN
yellow-
green
positive transflective
Additional variants (same form factor, different LCD mode or backlight):
CFA633-YYH-KU
(USB)
STN yellow-green positive transflective
LCD: yellow-green edge LEDs
Keypad: yellow-green LEDs
CFA633-TMI-KS
(“full swing”
RS- 232)
LCD: white edge LEDs
Keypad: blue LEDs
STN
STN
blue
blue
negative transmissive
negative transmissive
CFA633-TMI-KU
(USB)
LCD: white edge LEDs
Keypad: blue LEDs
CFA633-TFH-KU FSTN
(“full swing”
neutral
neutral
positive transflective
positive transflective
LCD: white edge LEDs
Keypad: white LEDs
USB)
CFA633-TFH-KS FSTN
(“full swing”
LCD: white edge LEDs
Keypad: white LEDs
RS-232)
CFA633-RDI-KU FFSTN near-black negative transmissive
(USB)
LCD: red edge LEDs
Keypad: red LEDs
CFA633-RDI-KS FFSTN near-black negative transmissive
LCD: red edge LEDs
Keypad: red LEDs
(“full swing”
RS-232)
Page | 8
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
2.5. Drive Bay Mounting Bracket
On the webpage for CFA633-YYH-KS, after you click the “Customize and Add to Cart” button, you will
see a list of options for different cables, connectors and the drive bay bracket.
Figure 1. Bracket (Black Overlay with Logo)
Page | 9
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
2.6. Cables
Below is a list of some of the cables we offer to make it easy to integrate the CFA633 into your
system. Please note that cable lengths are approximate. Common configurations are described in
Connection Information.
Crystalfontz
Cable
Description
All Cables Are RoHS Compliant
Image
Cable allows you to plug a 4-pin “hard drive style” Molex power
connector into the module's “floppy drive style” power connector, plus
provides an additional female 4-pin Molex connector.
WR-PWR-Y12
~13 inches
Use this ribbon cable to supply communications. Connect cable’s 10-
pin female connector to the module’s J_RS232 male connector.
Connect cable’s RS232 DB9 9-pin female connector to host’s DB9 9-
pin male serial port. Default or alternate motherboard RS-232 pinouts
can be accommodated by changing jumpers on the CFA633.
WR-232-Y08
~27 inches
Use this cable to supply communications. Connect one of the 10-pin
female connectors to the module’s’ J_RS232 10-pin male connector.
Connect cable’s second 10-pin female connector to host’s
motherboard 10-pin male connector. This cable supports standard or
alternate pinout motherboard RS-232 connections without changing
jumpers on the module.
WR-232-Y22
~26 inches
Use this ATX power cable to turn an ATX power supply on and off, or
power cycle the host through the module. Connect the cable’s male 7-
pin connector to the module’s J8 female connector. (Requires optional
7-in female connector at J8 on module. Select J8 connector after you
click on the module’s website page button “Customize and Add to
Cart”.)
WR-PWR-Y14
~24 inches
WR-FAN-X01
~16 inches
Fan extension cable for standard 3-pin fans.
WR-DOW-Y17
~12 inches +
~12 inches
between
Connect (“daisy chain”) up to 32 of these DOW (Dallas One-Wire)
DS18B20 temperature sensor cables. Requires optional DOW
connector at J_DOW on module. (Select DOW connector after you
click on the module’s website page button “Customize and Add to
Cart”.)
connectors
Page | 10
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
3. Mechanical Characteristics
3.1. Physical Characteristics
Specification
(mm)
Specification
(inch, reference)
Item
Module Overall Dimensions
Width and Height
110.5 (W) x 35.0 (H)
20.1
4.35 (W) x 1.378 (H)
0.791
Depth without Keypad
Maximum Depth with Keypad
Viewing Area
25.9
1.020
61.0 (W) x 15.8 (H)
56.20 (W) x 11.5 0(H)
2.95 (W) x 5.55 (H)
0.55 (W) x 0.65 (H)
2.4
2.402 (W) x 0.622 (H)
2.213 (W) x 0.453 (H)
0.116 (W) x 0.219 (H)
0.022 (W) x 0.026 (H)
0.094
Active Area
Character Size
Dot Size
Keystroke Travel (approximate)
Weight (approximate)
42 grams
1.48 ounces
3.2. Jumper Locations and Functions (All Interfaces)
All jumpers are configurable, but not all jumpers will affect your interface (serial or USB). Close the
jumpers by melting a ball of solder across their gap. Reopen the jumpers by removing the solder with
a solder wick. Where applicable, the corresponding resistor must also be removed to open a jumper
(RJP2 must be removed for JP2 to be open, for example).
Figure 2. CFA633 HW v2.1 Jumper Locations and Functions
Page | 11
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Jumper Locations and Functions (All Interfaces)
open
J1 (RS232), Pin 10 is open
JP1
JP2
closed
open
LCD Tx/Host Rx to J1 (RS232), Pin 10
J1 (RS232), Pin 2 is open (see also JP3 and JP11)
LCD Tx/Host Rx to J1 (RS232), Pin 10
RJP2
closed
open
J1 (RS232), Pin 2 is open (see also JP2 and JP11)
LCD Tx/Host Rx to J1 (RS232), Pin 2
JP3
closed
open
J1 (RS232), Pin 3 is open (see also JP5 and JP12)
LCD Rx/Host Rx to J1 (RS232), Pin 3
JP4
RJP4
closed
open
J1 (RS232), Pin 3 is open (see also JP4 and JP12)
Ground to J1 (RS232), Pin 3
JP5
closed
open
J1 (RS232), Pin 5 is open
JP6
RJP6
closed
open
Ground to J1 (RS232), Pin 5
+5v pin from PWR connector is open (see also JP9)
+5v pin from PWR connector supplies power to module
J1 (RS232), Pin 2 is open (see also JP2 and JP3)
Logic-level (0-5v) LCD Tx/Host Rx to J1 (RS232), Pin 2
J1 (RS232), Pin 3 is open (see also JP4 and JP5)
Logic-level (0-5v) LCD Rx/Host Rx /Tx to J1 (RS232), Pin 3
JP8
RJP8
closed
open
JP11
JP12
closed
open
closed
Page | 12
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
open
J1 (RS232), Pin 4 is open
+5v to J1 (RS232), Pin 4
JP13
closed
open
Module +5v power independent of USB
Module +5v power supplied from USB
No function
JPUSBPWR
RJPUSBPWR
closed
open
JPUSBSNS
JPFLPSNS
closed
open
+5v from USB is connected to processor’s ATX SENSE
No function
closed
open
+5v from floppy is connected to processor’s ATX SENSE
Adds 5K Ω series resistor for ATX host power sense
GPIO[1] direct connection
JPGPIO1
RJPGPIO1
closed
Page | 13
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
4. Optical Characteristics
4.1. Definition of Viewing Angles
This module has a 6:00 o’clock viewing angle.
Eyes Look Down
Eyes Look Up
12:00 o’clock
Top Viewing Preferred
6:00 o’clock
Bottom Viewing Preferred
Figure 3. Definition of 6:00 o'clock and 12:00 o'clock Viewing Angles
Page | 14
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
5. Electrical Specifications
5.1. System Block Diagram
Figure 4. System Block Diagram
Page | 15
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
6. Supply Voltages and Current
6.1. Absolute Maximum Ratings
Absolute Maximum Ratings
Symbol
Minimum
Maximum
TOP
TST
Operating Temperature
-20°C
-30°C
10%
0v
+70°C
+80°C
90%
Storage Temperature
Humidity Range (Non-condensing)
Supply Voltage for Logic
RH
VDD
+5.5v
Please note that these are stress ratings only. Extended exposure to the absolute maximum ratings listed
above may affect device reliability or cause permanent damage. Functional operation of the module at
these conditions beyond those listed under DC Characteristics is not implied.
6.2. DC Characteristics
5v Module Supply Voltage
Minimum
Nominal
Maximum
Supply voltage for LCD, backlights, and logic
+4.75v
+5v
+5.25v
5v Typical Current Consumption
Specification
+5v (LCD, microcontroller, with backlight off, 0%)
+5v (LCD, microcontroller, with backlight on, 100%)
6mA ~ 10mA typical
85mA ~ 105mA typical
6.3. “12v” Fan/GPO Characteristics
The CFA633 has 4 connectors that may be used to control standard 3-pin fans. These connectors
may also be used as open-drain GPO (General-Purpose Outputs) to control devices other than fans.
For instance, a 12v relay could be connected in place of the fan, and used to control some external
load. Be aware that for most GPO loads, you will want to limit the fan power setting (17 (0x11): Set
Fan Power) to 0% (off) or 100% (on). A setting of 1 to 99 will PWM the output, which may not be
desirable. Also, be aware that by default, all four fans are on at boot time. This setting can be
changed by using 4 (0x04): Store Current State as Boot State. Please see Fan Connections for more
information.
“12v” Fan/GPO Supply Voltage
Minimum
Nominal
Maximum
Supply voltage for open-drain/GPO control
+2v
+12v
+24v
Page | 16
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
“12v” Fan/GPO Current
Limits
Specification
•
•
Maximum continuous current draw must be <1.5 A per fan
connector, no more than 4 A total.
Maximum pulsed current draw may be up to 5 A per connector.
The pulse width must be less than 50 mS. (This pulse specification
allows for the fan's start-up current spike.)
Draw on fan/GPO supply (“12v”)
will vary, depending on user
equipment connected to FAN1
through FAN4.
•
Assure that the cables and connectors used are suitable for the
current drawn in your system.
Tach and Fan Criteria
Fan Power Control PWM1 Frequency
Specification
18 Hz nominal
Fan Tachometer Speed Range (assuming two
PPR2)
600 RPM to 3,000,000 RPM
1PWM is Pulse Width Modulation. PWM controls the average power by switching a level between “full on”
and “full off”. Please assure that your fan can be safely controlled by PWM.
2PPR is Pulses Per Revolution, also written as p/r.
6.4. GPIO[0] – GPIO[4] Characteristics
The CFA633 has 5 GPIO (General-Purpose Input/Output) pins available. These pins connect to the
processor’s CMOS GPIO pins. The may be set to input or output, additionally some pins have special
purpose functions. When they are set as GPIO outputs, the average voltage can be controlled by
PWM. Please refer to 34 (0x22): Set or Set and Configure GPIO Pins and 35 (0x23): Read GPIO Pin
Levels and Configuration State for more information.
DC Characteristics
Test Conditions
Symbol
Minimum Typical Maximum
V
T
Supply Voltage for Logic
+4.75v
+5.0v
+5.25v
OP =-30°C to +70°C
DD - GND
V
VIH
VIL
V
VDD
Input High Voltage
Input Low Voltage
Output High Voltage
Output Low Voltage
DD = +5v
DD -1.0v
0v (GND)
V
+0.6v
VOH
VOL
+0.9
DD
V
0v (GND)
+0.1
DD
Page | 17
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
GPIO[0] through GPIO[4] Current Limits
Specification
Sink
25 mA
10 mA
Source
6.5. RS-232 Characteristics
Signals on Header J_RS232
Specification
Symbol
Minimum
Typical
Maximum
+15v
RS232 Input Voltage Range
RS232 Input High Voltage
RS232 Input Low Voltage
RS232 Output Voltage Swing
-15v
VIH-RS232
VIL-RS232
+2.4v
+0.8v
±5.0v
±5.4v
ESD (Electro-Static Discharge) Specifications for Tx and Rx pins of connector J_RS232 only:
+15 kV Human Body Model
+15 kV IEC1000-4-2 Air Discharge
+8 kV IEC1000-4-2 Contact Discharge
The remainder of this circuitry is industry standard CMOS logic and susceptible to ESD damage.
Please use industry standard antistatic precautions as you would for any other static sensitive
devices such as expansion cards, motherboards, or integrated circuits. Ground your body, work
surfaces, and equipment.
6.6. LED Backlight Information
The backlights used in the CFA633 are designed for very long life, but their lifetime is finite. To
conserve the LED lifetime, you can dim or turn off the backlights during periods of inactivity.
Page | 18
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
7. Connection Information
7.1. Standard Power Connection
The easiest way to provide power from a host to CFA633-YYH-KS is to connect the “3.5-inch floppy”
power cable to J_PWR on the CFA633. Alternatively, you can use a Crystalfontz WR-PWR-Y12 cable
to adapt the “hard drive” power cable to J_PWR. Using this standard connection, both 5v (for the
LCD) and 12v (for the fans) is supplied.
If you would like, you may source or build your own power cable. The connector loaded at J_PWR is:
Tyco Electronics / Amp part number 4-171825-4 Mouser Electronics part number 571-4-171825-4
or equivalent.
NOTE: It is possible to supply Rx, Tx, 5v, 12v, and ground through J_RS232, so that all connections
to the host can be on a single cable. If the "Default RS-232 Pin Assignments" are selected, the five
connections needed to operate the module are all on a single column of the pins on J_RS232. This
allows a single 0.1-inch spacing 5-conductor cable to connect between the CFA633-YYH-KS and
your embedded system. You will need to close JP13 for 5v and JP6/RJP6 for ground.
Did you know? Crystalfontz can supply cables and close the appropriate jumpers so that
the module and cables are pre-configured and bundled under a single part number, ready
to use. Please contact technical support (+1-888-206-9720 or email
techinfo@crystalfontz.com for details. A minimum order quantity may apply.
7.2. Connecting 5v Power
You may supply 5v through J_PWR, J8, or J_RS232. If you supply 5v through J_PWR, you will need
to assure that JP8 is closed or RJP8 is loaded. If you supply 5v through J_RS232 you must close
JP13. Be aware that when 5v is fed in one of these connections, it may also be fed out at the other
connections, depending on jumper settings. Please refer to the illustration below.
Figure 5. 5v Power Connection Option
Page | 19
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
7.3. Connecting 12v Power for Fans
You may supply 12v through J_PWR, J8, or J_RS232. Assure the load connected does not exceed
the current rating of the cable can connectors. Be aware that if 12v is fed in one of these connections,
it will also be fed out at the other connections. Please refer to the illustration below.
Figure 6. 12v Power Connection Option
Page | 20
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
7.4. Ground Connections
You may supply the ground connection through J_PWR, J8, or J_RS232. If you supply 5v through
J_RS232 you must close JP6 or load RJP6. Typically, you will want to use the ground connection that
is closest to the corresponding power connection. Please refer to the illustration below.
Figure 7. 12v Power Connection Option
Page | 21
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
8. ATX Power Supply and Control Connections
The CFA633-YYH-KS has the ability to control power on/off and reset functions of a standard ATX PC
power supply.
The GPIO pins used for ATX control must not be configured as user GPIO, and must be
configured to their default drive mode in order for the ATX functions to work correctly. These
settings are the default but may be changed by the user. See command 34 (0x22): Set or Set
and Configure GPIO Pins.
To enable ATX functionality, the CFA633-YYH-KS is powered from the PC's VSB signal (the “stand-by” or
“always-on” +5v ATX power supply output) through the 5v pin of J8. Since the CFA633 is then always
powered, it can detect the “on” key press even when the system is “off”.
When the host’s power is off, the CFA633 will blank the LCD and turn off the backlights. Please see
command 28 (0x1C): Set ATX Power Switch Functionality. This is a low power state and from the user’s
viewpoint the CFA633 and system will appear to be off. If +12v remains active (which would not be
expected, since the host is "off"), the fans will remain on at their previous settings. Please refer to the
illustration below.
Figure 8. ATX Power Supply and Control Connections
Page | 22
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
The CFA633 needs to be able to sense if the host’s main power supply is on or off so it can act like it is
off. Here are the jumper settings needed to make that work:
•
•
•
•
Open JPGPIO0 and RJPGIO0. This inserts a series resistor so the module can safely sense the
power supply pin.
Open JP8 and RJP8. This allows the module to be powered from VSB through the 5v pin of J8
independent of the 5v switched supplied on the 5v pin of J_PWR.
For an RS-232 module, close JPFLPSNS and connect the 5v pin of J_PWR to the PC’s main
supply as usual.
For a USB module, close JPUSBSNS and connect the USB cable to a switched power USB port
as usual.
The motherboard's power switch input is connected to Pin 5 of the CFA633-YYH-KS’s connector J8
(labeled as GPIO[2]). This pin functions as POWER CONTROL. The POWER CONTROL pin is
configured as a high-impedance input until the LCD module wants to turn the host on or off, then it will
change momentarily to low impedance output, driving either low or high depending on the setting of
POWER_INVERT. Please see command 28 (0x1C): Set ATX Power Switch Functionality.
The motherboard's reset switch input is connected to Pin 4 of the CFA633-YYH-KS connector J8 (labeled
as GPIO[3]). This pin functions as RESET. The RESET pin is configured as a high-impedance input until
the LCD module wants to reset the host. Then it will change momentarily to low impedance output, driving
either low or high depending on the setting of RESET_INVERT. See command 28 (0x1C): Set ATX
Power Switch Functionality. This connection is also used for the hardware watchdog.
The Crystalfontz WR-PWR-Y14 cable simplifies ATX power control connections. Below is an illustration of
how the optional Crystalfontz WR-PWR-Y14 cable connects to the CFA633 connector J8 and your ATX
power supply:
Figure 9. ATX Power Supply and Control Using Crystalfontz WR-PWR-Y14 Cable
Page | 23
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Once the hardware is configured, use command 28 (0x1C): Set ATX Power Switch Functionality, to
enable any of the following functions:
•
System Power On. If POWER-ON SENSE is low (0v), pressing the green check key for 0.25
seconds will turn the unit on by driving POWER CONTROL line for the pulse width set by command
28: Set ATX Power Switch Functionality (1.0 seconds default).
•
System Hard Power Off. If POWER-ON SENSE is high (+5v) pressing the red X key for 4 seconds
will turn the system off by driving the POWER CONTROL line. The line will be driven for a minimum of
the pulse width set by command 28 (0x1C): Set ATX Power Switch Functionality (1.0 seconds
default). If the user continues to press the key, the CFA633-YYH-KS will continue to drive the line for
up to an additional 5 seconds.
•
System Hard Reset. If POWER-ON SENSE is high (+5v) pressing the green check key for 4
seconds will reset the system off by driving the RESET line for 1 second. The CFA633-YYH-KS will
reboot itself immediately after resetting the host.
Page | 24
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
9. RS-232 Connections
RJP2, RJP4, and RJP6 are closed by default, selecting the "Default RS-232 Pin Assignments". This
connection allows a low-cost ribbon cable (Crystalfontz WR-232-Y08) to connect the CFA633-YYH-KS
DB-9 COM port.
If there is a matching 0.1-inch center, 10-pin RS-232 connector on your system's motherboard, then in
most cases a simple straight-through ribbon cable (Crystalfontz WR-232-Y22 or as CW Industries’ C3AAG-
1018G-ND cable available from Digi-Key or similar) can be used to connect from the CFA633 to the
motherboard's header. The pin order of your motherboard's header will determine if the CFA633-YYH-
KS’s pin assignments need to be "Default" or "Alternate".
By opening JP2, JP4 and JP6 and closing JP1, JP3, and JP5 you can select the "Alternate RS-232 Pin
Assignments". Please see Jumper Locations and Functions.
Figure 10. Default and Alternate RS232 Pin Assignments
Page | 25
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
10. Fan Connections
The CFA633-YYH-KS supports up to 4 standard “3-pin” cooling fans. The fan connectors are compatible
with industry standard “3-pin” fans.
Figure 11. Four Fan Connectors
The average power delivered to each fan may be set to any level between 0% and 100% through
command 17 (0x11): Set Fan Power. The power setting controls the PWM duty cycle of a high-
performance open-drain FET connected between the system ground and the GND pin of each fan
connector. The PWM frequency is nominally 18 Hz.
The CFA633-YYH-KS can measure the frequency of the fan's tachometer signal, and given the pulses-
per-revolution, calculate the RPM and display it on the LCD or report the information needed to calculate
the RPM to the host. If a fan's power is set to 100%, then the average frequency of each fan's tachometer
signal is measured over a 1/8 second (125 ms) period of time. Each fan is measured in sequence, so
updated fan speed information is available every 1/2 second (500 ms) for each fan.
The power to a fan must be on in order for the fan's tachometer signal to be valid. If a fan is configured to
report its speed to the host, the power of the fan will be unconditionally set to 100% at the start of the 1/8
second period of time when the CFA633-YYH-KS is measuring the frequency of the tachometer signal,
overriding the PWM. The CFA633-YYH-KS will leave the power to the fan on until the glitch delay. Please
see command 26 (0x1A): Set Fan Tachometer Glitch Filter has expired and two tachometer edges have
been detected. The normal PWM cycle will then resume.
This technique allows the fan speed to be measured with a very minimal effect on the speed of the fan. If
the fan power is set to 100% or if the speed of the fan and length of the PWM on time are such that the
speed can be measured without stretching the PWM, then this override will not change the speed of the
fan at all. If the fan power is set to some level other than 100% and the PWM on time is short compared
to the tachometer signal frequency, then the fan speed will pulse slightly every 1/2 second due to the
stretching of the PWM on time. During tachometer measuring, the maximum width of a stretched-on pulse
is 1/8 second. For some fans, the result is not very noticeable, and this technique will allow you to monitor
the average speed of the fan while controlling the average power of the fan. For other fans (particularly
high torque, high RPM models), the pulsing effect may be undesirable.
Page | 26
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Since the on-time is dynamically stretched by the CFA633-YYH-KS to force the fan to produce two
tachometer edges, the result is that the fan will resist stalling as power is reduced towards 0% and the
RPM is being measured.
Below is a graph of fan RPM vs. the fan power setting for a typical high-performance 80 mm fan (for
example, Delta FFB0812SHE):
Figure 12. Graph Showing Fan PWM Power (% on time) for Various Fan RPM
Typically, if the fan speed is not at 100% then it is being controlled by the host software to drive a
temperature sensor to a given reading in a closed-loop arrangement. In this case, the temperature, rather
than the fan speed would be monitored for out-of-range conditions. If the temperature is within
specification, you really do not care how fast the fan is turning. In an unattended system, it may be a good
idea to set each fan to 100% for a few seconds during a test cycle – perhaps once a day or once a week
– and log the steady-state RPM attained by the fan. If that steady state RPM were higher (this can be
caused by a blocked airflow) or lower than expected (perhaps the fan's bearings are failing), a
maintenance warning could be generated by the host software.
For safety purposes enable the fan power fail-safe, see command 25 (0x19): Set Fan Power
Fail-Safe, that is being used in closed-loop control through host software, the CFA633-YYH-KS
will turn that fan to 100% if the host fails to update the power of the fans within a given time
interval. For instance, if the communications cable is dislodged, or the host operating system
hangs, or the cooling control process is terminated, the CFA633-YYH-KS will automatically
force those fans to 100%, preventing potential equipment damage due to lack of cooling.
IMPORTANT: We tested the CFA633-YYH-KS with a large range of fans and had good results. However,
you are responsible for determining if the control and monitoring methods employed by the LCD
module are acceptable for your application. In particular, if a fan's power is set too low, it may stall or
fail to start, providing no cooling. Using a PWM to control fan speed is generally accepted; however, we
make no claims that it is compatible with any particular fan or that it does not affect the lifetime of
the fans. Some higher torque fans (especially the ball-bearing models), may click, buzz, or growl at low
power settings due to the torque in the fan going from positive to negative in each PWM cycle. If you limit
the power setting to 0% or 100% there should be no compatibility issues.
Page | 27
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
We do not recommend operating a fan below 20% PWM duty cycle for an extended period of time.
Limiting the minimum PWM duty cycle to 30% or 40% should reduce the mechanical and electrical
stresses in the fan, avoiding premature failure.
When power is applied to the CFA633-YYH-KS, it will set each fan's power to the default value of 100%
or to the value that is stored in the boot state. To minimize peak current loading on the +12v supply during
start-up, the fans are started in sequence with a 0.5 second delay between any fans that are on.
10.1. Connect Optional Crystalfontz WR-DOW-Y17 Temperature Sensors
The Crystalfontz WR-DOW-Y17 cable has a DS18B20 Dallas Programmable Resolution One-Wire
(DOW) temperature sensor attached to a “daisy chainable” cable. (“Daisy chain” means several
devices connected in a linear series.) Connect one WR-DOW-Y17 to the connector labeled J_DOW.
Figure 13. J_DOW Connection for WR-DOW-Y17 Temperature Sensor
If desired, connect the WR-DOW-Y17’s 3-pin male connector to an additional WR-DOW-Y17
temperature sensor. Up to 32 WR-DOW-Y17 temperature sensors can be connected. (“Daisy
chained”.)
The DS18B20 on the WR-DOW-Y17 has 0.5°C absolute accuracy. Or you make a temperature sensor
cable using a DS1822 Dallas Econo One-Wire Digital Thermometer with +2°C accuracy.
Any temperature sensor can be configured to be automatically read and display to the CFA633-YYH-
KS's LCD in °C or °F, see command 21 (0x15): Set Up Live Fan or Temperature Display.
Independently, any temperature sensor can be configured to report to the host, see 19 (0x13): Set Up
Temperature Reporting. Any sensors configured to be reported are updated once each second.
Page | 28
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
11. Host Communications
The CFA633 communicates with its host using an RS-232 interface. The port settings are 19200 baud, 8
data bits, no parity, 1 stop bit by factory default. The speed can be set to 115200 baud under software
control, see command 33 (0x21): Set Baud Rate.
11.1. Packet Structure
All communication between the CFA633 and the host takes place in the form of a simple and robust
CRC checked packet. The packet format allows for very reliable communications between the
CFA633 and the host without the traditional problems that occur in a stream-based serial
communication (such as having to send data in inefficient ASCII format, to “escape” certain “control
characters”, or losing sync if a character is corrupted, missing, or inserted).
Reconciling packets is recommended rather than using delays when communicating with
the module. To reconcile your packets, please ensure that you have received the
acknowledgement packet from the packet most recently sent before sending any additional
packets to the LCD module. This practice will guarantee that you will not have any dropped
packets or missed communication with the LCD module.
All packets have the following structure:
<type><data_length><data><CRC>
typeis one byte, and identifies the type and function of the packet:
TTcc cccc
|||| ||||--Command, response, error or report code 0-63
||---------Type:
00 = normal command from host to CFA633
01 = normal response from CFA633 to host
10 = normal report from CFA633 to host (not in
direct response to a command from the host)
11 = error response from CFA633 to host (a packet
with valid structure but illegal content
was received by the CFA633)
data_lengthspecifies the number of bytes that will follow in the data field. The valid range of
data_lengthis 0 to18.
datais the payload of the packet. Each typeof packet will have a specified data_lengthand format
for data as well as algorithms for decoding datadetailed below.
CRCis a standard 16-bit CRC of all the bytes in the packet except the CRC itself. The CRC is sent
LSB first. At the port, the CRC immediately follows the last used element of data [ ]. See Appendix A:
Demonstration Software and Sample Code for details.
The following C definition may be useful for understanding the packet structure.
typedef struct
{
unsigned char command;
unsigned char data_length;
unsigned char
data[MAX_DATA_LENGTH];
unsigned short CRC;
}COMMAND_PACKET;
Page | 29
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
On our website, Crystalfontz supplies a demonstration and test program, cfTest, along with its C source
code. Included in the cfTest source is a CRC algorithm and an algorithm that detects packets. The
algorithm will automatically re-synchronize to the next valid packet in the event of any communications
errors. Please follow the algorithm in the sample code closely in order to realize the benefits of using the
packet communications.
11.2. About Handshaking
The nature of CFA633’s packets makes it unnecessary to implement traditional hardware or software
handshaking.
The host should wait for a corresponding acknowledge packet from the CFA633 before sending the
next command packet. The CFA633 will respond to all packets within 250 mS. The host software
should stop waiting and retry the packet if the CFA633 fails to respond within 250 mS. The host
software should report an error if a packet is not acknowledged after several retries. This situation
indicates a hardware problem – for example, a disconnected cable.
Please note that some operating systems may introduce delays between when the data arrives at the
physical port from the CFA633 until it is available to the user program. In this case, the host program
may have to increase its timeout window to account for the additional overhead of the operating
system.
The CFA633 can be configured to send several types of report packets along with regular
acknowledge packets. The host should be able to buffer several incoming packets and must
guarantee that it can process and remove packets from its input buffer faster than the packets can
arrive given the baud rate and the reporting configuration of the CFA633. For any modern PC using
reasonably efficient software, this requirement will not pose a challenge.
The report packets are sent asynchronously with respect to the command packets received from the
host. The host should not assume that the first packet received after it sends a command is the
acknowledge packet for that command. The host should inspect the typefield of incoming packets
and process them accordingly.
11.3. Report Codes
The CFA633 can be configured to report three items. The CFA633 sends reports automatically when
the data becomes available. Reports are not sent in response to a particular packet received from the
host. The three report types are (1) 0x80: Key Activity, (2) 0x81: Fan Speed Report, and (3) 0x82:
Temperature Sensor Report. Details are below.
0x80: Key Activity
If a key is pressed or released, the CFA633 sends a Key Activity report packet to the host. Key event
reporting may be individually enabled or disabled by command 23 (0x17): Configure Key Reporting.
type = 0x80
data_length = 1
data[0] is the type of keyboard activity:
KEY_UP_PRESS
1
2
KEY_DOWN_PRESS
KEY_LEFT_PRESS
KEY_RIGHT_PRESS
KEY_ENTER_PRESS
KEY_EXIT_PRESS
KEY_UP_RELEASE
KEY_DOWN_RELEASE
KEY_LEFT_RELEASE
KEY_RIGHT_RELEASE
KEY_ENTER_RELEASE
KEY_EXIT_RELEASE
3
4
5
6
7
8
9
10
11
12
Page | 30
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
0x81: Fan Speed Report
If any of up to four fans connected to CFA633 is configured to report its speed information to the host,
the CFA633 will send Fan Speed Reports for each selected fan every 1/2 second, please see
command 16 (0x10): Set Up Fan Reporting.
type = 0x81
data_length = 4
data[0] is the index of the fan being reported:
0 = FAN 1
1 = FAN 2
2 = FAN 3
3 = FAN 4
data[1] is number_of_fan_tach_cycles
data[2] is the MSB of Fan_Timer_Ticks
data[3] is the LSB of Fan_Timer_Ticks
The following C function will decode the fan speed from a Fan Speed Report packet into RPM:
int OnReceivedFanReport(COMMAND_PACKET *packet, char * output)
{
int
return_value;
return_value=0;
int
number_of_fan_tach_cycles;
number_of_fan_tach_cycles=pac et->data[1];
if(number_of_fan_tach_cycles<3)
sprintf(output," STOP");
else if(number_of_fan_tach_cycles<4)
sprintf(output," SLOW");
elseif(0xFF==number_of_fan_tach_cycles)
sprintf(output," ----");
else
{
//Specific to each fan, most commonly 2
int
pulses_per_revolution;
pulses_per_revolution=2;
int
Fan_Timer_Ticks;
Fan_Timer_Ticks=(*(unsigned short *)(&(packet->data[2])));
return_value=((27692308L/pulses_per_revolution)*
(unsignedlong)(number_of_fan_tach_cycles-3))/
(Fan_Timer_Ticks);
sprintf(output,"%5d",return_value);
}
return(return_value);
}
0x82: Temperature Sensor Report
If any of the up to 32 temperature sensors is configured to report to the host, the CFA633 will send
Temperature Sensor Reports for each selected sensor every second, please see the command
19 (0x13): Set Up Temperature Reporting.
type = 0x82
data_length = 4
data[0] is the index of the temperature sensor being reported:
0 = temperature sensor 1
1 = temperature sensor 2
. . .
31 = temperature sensor 32
Page | 31
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
data[1] is the MSB of Temperature_Sensor_Counts
data[2] is the LSB of Temperature_Sensor_Counts
data[3] is DOW_crc_status
The following C function will decode the Temperature Sensor Report packet into °C and °F:
void OnReceivedTempReport(COMMAND_PACKET *packet, char *output)
{
//First check the DOW CRC return code
from the CFA633 if(packet->data[3]==0)
strcpy(output,"B
AD CRC"); else
{
double
degc;
degc=(*(short*)&(packet->data[1]))/16.0;
double
degf;
degf=(degc*9.0)/5.0
+32.0;
sprintf(output,"%9.4f°C
=%9.4f°F", degc,
degf);
}
}
11.4. Command Codes
Below is a list of valid commands for the CFA633. Each command packet is answered by either a
response packet or an error packet. The low 6 bits of the type field of the response or error packet is
the same as the low 6 bits of the type field of the command packet being acknowledged.
0 (0x00): Ping Command
The CFA633 will return the Ping Command to the host.
type: 0x00 = 010
valid data_length is 0 to 16
data[0-(data_length-1)] can be filled with any arbitrary data
The return packet is identical to the packet sent, except the type will be 0x40 (normal response, Ping
Command):
type: 0x40 | 0x00 = 0x40 = 6410
data_length = (identical to received packet)
data[0-(data_length-1)] = (identical to received packet)
1 (0x01): Get Hardware & Firmware Version
The CFA633 will return the hardware and firmware version information to the host.
type: 0x01 = 110
valid data_length is 0
The return packet will be:
type: 0x40 | 0x01 = 0x41 = 6510
data_length = 16
data[] = "CFA633:h2.1, s2.2”
h2.1 is the hardware revision
s2.2 is the firmware version
Page | 32
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
2 (0x02): Write User Flash Area
The CFA633 reserves 16 bytes of nonvolatile memory for arbitrary use by the host. This memory can
be used to store a serial number, IP address, gateway address, netmask, or any other data required.
All 16 bytes must be supplied.
type: 0x02 = 210
valid data_length is 16
data[] = 16 bytes of arbitrary user data to be stored in
the CFA633's non-volatile memory
The return packet will be:
type: 0x40 | 0x02 = 0x42 = 6610
data_length = 0
3 (0x03): Read User Flash Area
This command will read the User Flash Area and return the data to the host.
type: 0x03 = 310
valid data_length is 0
The return packet will be:
type: 0x40 | 0x03 = 0x43 = 6710
data_length = 16
data[] = 16 bytes user data recalled from
the CFA633's non-volatile memory
4 (0x04): Store Current State as Boot State
The CFA633 loads its power-up configuration from nonvolatile memory when power is applied. The
CFA633 is configured at the factory to display a “welcome” screen when power is applied. This
command can be used to customize the “welcome” screen, as well as the following items:
•
Characters shown on LCD, which are affected by:
o
o
o
o
Command 6 (0x06): Clear LCD Screen.
Command 7 (0x07): Set LCD Contents, Line 1.
Command 8 (0x08): Set LCD Contents, Line 2.
Command 31 (0x1F): Send Data to LCD.
•
•
•
•
•
•
•
•
•
•
•
•
Special character font definitions (Command 9 (0x09): Set LCD Special Character Data).
Cursor position (Command 11 (0x0B): Set LCD Cursor Position).
Cursor style (Command 12 (0x0C): Set LCD Cursor Style).
Contrast setting (Command 13 (0x0D): Set LCD Contrast).
Backlight setting (Command 14 (0x0E): Set LCD & Keypad Backlight).
Fan power settings (Command 17 (0x11): Set Fan Power).
Settings of any “live” displays (Command 21 (0x15): Set Up Live Fan or Temperature Display).
Key press and release masks (Command 23 (0x17): Configure Key Reporting).
Fan glitch delay settings (Command 26 (0x1A): Set Fan Tachometer Glitch Filter).
ATX function enable and pulse length settings (command 28 (0x1C): Set ATX Power Switch).
Baud rate (Command 33 (0x21): Set Baud Rate).
GPIO settings (Command 34 (0x22): Set or Set and Configure GPIO Pins).
You cannot store the fan or temperature reporting (although the live display of fans or temperatures
can be saved). You cannot store the fan fail-safe or host watchdog. The host software should enable
these items once the system is initialized and it is ready to receive the data.
type: 0x04 = 410
valid data_length is 0
Page | 33
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
The return packet will be:
type: 0x40 | 0x04 = 0x44 = 6810
data_length = 0
If the current state and the boot state do not match after saving, the module will return an error
instead of an ACK. In this unlikely error case, the boot state will be undefined.
5 (0x05): Reboot CFA633, Reset Host, or Power Off Host
This command instructs the CFA633 to simulate a power-on restart of itself, reset the host, or turn the
host's power off. The ability to reset the host may be useful to allow certain host operating system
configuration changes to complete. The ability to turn the host's power off under software control may
be useful in systems that do not have ACPI compatible BIOS.
The GPIO pins used for ATX control must not be configured as user GPIO, and must be
configured to their default drive mode in order for the ATX functions to work correctly. These
settings are factory default, but may be changed by the user, see command 34 (0x22): Set
or Set and Configure GPIO Pins.
Rebooting the CFA633 may be useful when testing the boot configuration. It may also be useful to re-
enumerate the devices (WR-DOW-Y17 temperature sensors), on the One-Wire bus. To reboot the
CFA633, send the following packet:
type: 0x05 = 510
valid data_length is 3
data[0] = 8
data[1] = 18
data[2] = 99
The reboot command may take up to 3 seconds to return its acknowledge packet.
At boot-up, there is up to a 500ms (1/2 second) delay between turning on fans. By default,
all four fans are set to “on” at 100%. If you are not using a fan, set power to 0% (command
17 (0x11): Set Fan Power), and saving this setting as the default boot state (command 4
(0x04): Store Current State as Boot State). This will reduce the boot time.
If only one fan is on, there is no additional delay. If two fans are on, there is up to an
additional 500ms delay. If three fans are on, there is up to an additional 1,000ms delay. If all
four fans are on, there is up to an additional 1,500ms delay.
# of Fans Powered On
Expected Boot Time
0 to 1
300ms - 500ms
800ms - 1,000ms
1.3s - 1.5s
2
3
4
1.8s - 2.0s
Page | 34
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
To reset the host, assuming the host's reset line is connected to GPIO[3] as described in command
28 (0x1C): Set ATX Power Switch Functionality, send the following packet:
type: 0x05 = 510
valid data_length is 3
data[0] = 12
data[1] = 28
data[2] = 97
The CFA633 will return the acknowledge packet immediately; then reset the host. After
resetting the host (~1.5 seconds), the module will reboot itself. The module will not respond to
new command packets for up to 3 seconds (~4.5 seconds overall) after its reboot. Part of this
delay is the intentional staggered sequencing of turning on power to the fans. If you are not
using fans, you can speed the boot process by setting the fan power to 0 (command 17
(0x11): Set Fan Power), and saving this as the default boot state (command 4 (0x04): Store
Current State as Boot State). Normally, the host will be recovering from its own reset, so
the boot delay of the module will not be of consequence.
To turn the host's power off, assuming the host's power control line is connected to GPIO[2] as
described in command 28 (0x1C): Set ATX Power Switch Functionality, send the following packet:
type: 0x05 = 510
valid data_length is 3
data[0] = 3
data[1] = 11
data[2] = 95
The CFA633 will return the acknowledge packet immediately, then power cycle the host.
The power cycle length is dependent on the length of the power pulse (command 28
(0x1C): Set ATX Power Switch Functionality). After power cycling the host, the module will
reboot itself. The module will not respond to new command packets for up to 3 seconds
after its reboot. Part of this delay is the intentional staggered sequencing of turning on
power to the fans. If you are not using fans, you can speed the boot process by setting the
fan power to 0 (command 17 (0x11): Set Fan Power), and saving this as the default boot
state (command 4 (0x04): Store Current State as Boot State). Normally the host will be off
or recovering from its own power cycle, so the boot delay of the module will not be of
consequence.
In any of the above cases, the return packet will be:
type: 0x40 | 0x05 = 0x45 = 6910
data_length = 0
6 (0x06): Clear LCD Screen
Sets the contents of the LCD screen DDRAM to ' ' = 0x20 = 32 and moves the cursor to the left-most
column of the top line.
type: 0x06 = 610
valid data_length is 0
The return packet will be:
type: 0x40 | 0x06 = 0x46 = 7010
data_length = 0
Clear LCD Screen changes the LCD. The LCD contents is one of the items stored by the command
4 (0x04): Store Current State as Boot State.
Page | 35
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
7 (0x07): Set LCD Contents, Line 1
Sets the center 16 characters displayed for the top line of LCD screen.
Please use this command only if you need backwards compatibility with older CFA633
units. For new applications, please use the more flexible command 31 (0x1F): Send Data
to LCD.
type: 0x7 = 710
valid data_length is 16
data[] = top line’s display content (must supply 16 bytes)
The return packet will be:
type: 0x40 | 0x07 = 0x47 = 7110
data_length = 0
Set LCD Contents, Line 1 is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
8 (0x08): Set LCD Contents, Line 2
Sets the center 16 characters displayed for the bottom line of LCD screen.
Please use this command only if you need backwards compatibility with older CFA633 units.
For new applications, please use the more flexible command 31 (0x1F): Send Data to LCD.
type: 0x8 = 810
valid data_length is 16
data[] = bottom line's display content (must supply 16 bytes)
The return packet will be:
type: 0x40 | 0x08 = 0x48 = 7210
data_length = 0
Set LCD Contents, Line 2 is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
9 (0x09): Set LCD Special Character Data
Sets the font definition for one of the special characters (CGRAM).
type: 0x09 = 910
valid data_length is 9
data[0] = index of special character that you would like to modify, 0-7 are valid
data[1-8] = bitmap of the new font for this character
data[1-8]are the bitmap information for this character. Any value is valid between 0 and 63, the
msb is at the left of the character cell of the row, and the lsb is at the right of the character cell.
data[1]is at the top of the cell.
data[8] is at the bottom of the cell.
The return packet will be:
type: 0x40 | 0x09 = 0x49 = 7310
data_length = 0
Page | 36
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Set LCD Special Character Data is one of the items stored by the command 4 (0x04): Store Current
State as Boot State.
10 (0x0A): Read 8 Bytes of LCD Memory
This command will return the contents of the LCD’s DDRAM or CGRAM. This command is intended
for debugging.
NOTE: Firmware version prior to v1.9 did not return the address code.
type: 0x0A = 1010
valid data_length is 1
data[0] = address code of desired data
data[0] is the address code native to the LCD controller:
0x40 (\064) to 0x7F (\127) for CGRAM
0x80 (\128) to 0x93 (\143) for DDRAM, line 1
0xC0 (\192) to 0xD3 (\207) for DDRAM, line
The return packet will be:
type: 0x40 | 0x0A = 0x4A = 7410
data_length = 9
data[0] of the return packet will be the address code.
data[1-8]of the return packet will be the data read from the LCD controller's memory.
11 (0x0B): Set LCD Cursor Position
This command allows the cursor to be placed at the desired location on the CFA633’s LCD screen. If
you want the cursor to be visible, you may also need to send a command 12 (0x0C): Set LCD Cursor
Style.
type: 0x0B = 1110 valid
data_length is 2
data[0] = column (0-15 valid)
data[1] = row (0-1 valid)
The return packet will be:
type: 0x40 | 0x0B = 0x4B = 7510
data_length = 0
Set LCD Cursor Position is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
12 (0x0C): Set LCD Cursor Style
This command allows you to select among four hardware generated cursor options.
type: 0x0C = 1210 valid
data_length is 1
data[0] = cursor style (0-3 valid)
0 = no cursor
1 = blinking block cursor
2 = static underscore cursor
3 = blinking underscore cursor
(Note for 3: This behavior is different from the previous CFA633 HW
v1.x family which had a blinking block with a static underscore
cursor.)
Page | 37
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
The return packet will be:
type: 0x40 | 0x0C = 0x4C = 7610
data_length = 0
Set LCD Cursor Style is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
13 (0x0D): Set LCD Contrast
This command sets the contrast or vertical viewing angle of the display. Initiated by the host,
responded to by the CFA633.
type: 0x0D = 1310 valid
data_length is 1
data[0] = contrast setting (0-50 valid)
0 = light
16 = about right
29 = dark
30-50 = very dark
The return packet will be:
type = 0x40 | 0x0D = 0x4D = 7710
data_length = 0
Set LCD Contrast is one of the items stored by the command 4 (0x04): Store Current State as Boot
State.
14 (0x0E): Set LCD & Keypad Backlight
This command sets the brightness of the LCD and keypad backlights.
type: 0x0E = 1410 valid
data_length is 1
data[0] = backlight power setting (0-100 valid)
0 = off
1-99 = variable brightness
100 = on
The return packet will be:
type: 0x40 | 0x0E = 0x4E = 7810
data_length = 0
Set LCD & Keypad Backlight is one of the items stored by the command 4 (0x04): Store Current State
as Boot State.
15 (0x0F): (Deprecated)
16 (0x10): Set Up Fan Reporting
This command will configure the CFA633 to report the fan speed information to the host every 500
mS.
type = 0x10 = 1610
valid data_length is 1
data[0] = bitmask indicating which fans are enabled to
report (0-15 valid)
Page | 38
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
---- 8421 Enable Reporting of this Fan’s Tach Input
|||| ||||-- Fan 1: 1 = enable, 0 = disable
|||| |||--- Fan 2: 1 = enable, 0 = disable
|||| ||---- Fan 3: 1 = enable, 0 = disable
|||| |----- Fan 4: 1 = enable, 0 = disable
The return packet will be:
type = 0x40 | 0x10 = 0x50 = 8010
data_length = 0
If data[0]is not 0, then the CFA633 will start sending 0x81: Fan Speed Report packets for each
enabled fan every 500 mS, please see 0x81: Fan Speed Report. Each of the report packets is
staggered by 1/8 of a second.
Reporting a fan will override the fan power setting to 100% for up to 1/8 of a second every 1/2
second, see Fan Connections for a detailed description.
17 (0x11): Set Fan Power
This command will configure the power for the fan connectors. The fan power setting is one of the
items stored by the command 4 (0x04): Store Current State as Boot State.
type = 0x11 = 1710
valid data_length is 4
data[0] = power level for FAN 1 (0-100 valid)
data[1] = power level for FAN 2 (0-100 valid)
data[2] = power level for FAN 3 (0-100 valid)
data[3] = power level for FAN 4 (0-100 valid)
The return packet will be:
type = 0x40 | 0x11 = 0x51 =8110
data_length = 0
Set Fan Power is one of the items stored by the command 4 (0x04): Store Current State as Boot
State.
18 (0x12): Read DOW Device Information
When power is applied to the CFA633, it detects any devices (WR-DOW-Y17 temperature sensors)
connected to the Dallas Semiconductor One-Wire (DOW) bus and stores the device’s information.
This command will allow the host to read the device’s information.
The first byte returned is the Family Code of the Dallas One-Wire / iButton device. For a list of the
possible Dallas One-Wire / iButton device family codes available go to App Note 155: 1-Wire Software
Resource Guide on the Maxim/Dallas website.
Page | 39
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
REGARDING COMMAND 18: READ DOW DEVICE INFORMATION
The GPIO pin used for DOW must not be configured as user GPIO. It must be configured to its
default drive mode in order for the DOW functions to work correctly.
These settings are factory default but may be changed by the user, see command 34 (0x22):
Set or Set and Configure GPIO Pins.
In order for the DOW subsystem to be enabled and operate correctly, user GPIO[4] must be
configured as:
DDD = "111: 1=Hi-Z, 0=Slow, Strong Drive Down".
F = "0: Port unused for user GPIO."
This state is the factory default, but it can be changed and saved by the user. To ensure that
GPIO[4] is set correctly and the DOW operation is enabled, send the following command:
command = 34
length = 3
data[0] = 4
data[1] = 100
data[2] = 7
This setting must be saved as the boot state, so when the CFA633 reboots it will detect the
DOW devices.
type: 0x12 = 1810 valid
data_length is 1
data[0] = device index (0-31 valid)
The return packet will be:
type: 0x40 | 0x12 = 0x52 = 8210
data_length = 9
data[0] = device index (0-31 valid)
data[1-8] = ROM ID of the device
If data[1] is 0x22 (DS1822 Econo 1-Wire Digital Thermometer temperature sensor) or 0x28
(DS18B20 High Precision 1-Wire Digital Thermometer temperature sensor used on our WR-DOW-
Y17), then that device can be set up to automatically convert and report the temperature every
second. See the command 19 (0x13): Set Up Temperature Reporting.
19 (0x13): Set Up Temperature Reporting
This command will configure the CFA633 to report the temperature information to the host every
second.
type: 0x13 = 1910 valid
data_length is 4
data[0-3] = 32-bit bitmask indicating which temperature
sensors fans are enabled to report (0-255 valid in each location)
Page | 40
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
data[0]
08 07 06 05
04 03 02 01 Enable Reporting of sensor with
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
device index of:
|-- 0: 1 = enable, 0 = disable
|----- 1: 1 = enable, 0 = disable
|--------- 2: 1 = enable, 0 = disable
|------------ 3: 1 = enable, 0 = disable
|----------------- 4: 1 = enable, 0 = disable
|-------------------- 5: 1 = enable, 0 = disable
|----------------------- 6: 1 = enable, 0 = disable
|-------------------------- 7: 1 = enable, 0 = disable
data[1]
16 15 14 13
12 11 10 09 Enable Reporting of sensor with
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
device index of:
|-- 8: 1 = enable, 0 = disable
|----- 9: 1 = enable, 0 = disable
|--------- 10: 1 = enable, 0 = disable
|------------ 11: 1 = enable, 0 = disable
|----------------- 12: 1 = enable, 0 = disable
|-------------------- 13: 1 = enable, 0 = disable
|----------------------- 14: 1 = enable, 0 = disable
|-------------------------- 15: 1 = enable, 0 = disable
data[2]
24 23 22 21
20 19 18 17 Enable Reporting of sensor with
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
device index of:
|-- 16: 1 = enable, 0 = disable
|----- 17: 1 = enable, 0 = disable
|--------- 18: 1 = enable, 0 = disable
|------------ 19: 1 = enable, 0 = disable
|----------------- 20: 1 = enable, 0 = disable
|-------------------- 21: 1 = enable, 0 = disable
|----------------------- 22: 1 = enable, 0 = disable
|-------------------------- 23: 1 = enable, 0 = disable
data[3]
32 31 30 29
28 27 26 25 Enable Reporting of sensor with
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
device index of:
|-- 24: 1 = enable, 0 = disable
|----- 25: 1 = enable, 0 = disable
|--------- 26: 1 = enable, 0 = disable
|------------ 27: 1 = enable, 0 = disable
|----------------- 28: 1 = enable, 0 = disable
|-------------------- 29: 1 = enable, 0 = disables
|----------------------- 30: 1 = enable, 0 = disable
|-------------------------- 31: 1 = enable, 0 = disable
Any sensor enabled must have been detected as a 0x22 (DS1822 temperature sensor) or 0x28
(DS18B20 temperature sensor) during DOW enumeration. This can be verified by using the
command 18 (0x12): Read DOW Device Information.
The return packet will be:
type: 0x40 | 0x13 = 0x53 = 8310
data_length = 0
Page | 41
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
20 (0x14): Arbitrary DOW Transaction
The CFA633 can function as an RS-232 to Dallas One-Wire bridge. This command allows you to
specify arbitrary transactions on the One-Wire bus. One-Wire commands follow this basic layout:
<bus reset
//Required
<address_phase> //Must be "Match ROM" or "Skip ROM"
<write_phase>
<read_phase>
//optional, but at least one of write_phase or read_phase must be sent
//optional, but at least one of write_phase or read_phase must be sent
type: 0x14 = 2010
valid data_length is 2 to 16
data[0] = device_index (0-32 valid)
data[1] = number_of_bytes_to_read (0-14 valid)
data[2-15] = data_to_be_written[data_length-2]
If device_indexis 32, then no address phase will be executed. If device_index is in the range of
0 to 31, and a One-Wire device was detected for that device_indexat power on, then the write
cycle will be prefixed with a "Match ROM” command and the address information for that device.
If data_lengthis two, then no specific write phase will be executed (although address information
may be written independently of data_lengthdepending on the value of device_index).
If data_lengthis greater than two, then data_length-2bytes of data_to_be_writtenwill be
written to the One-Wire bus immediately after the address phase.
If number_of_bytes_to_read is zero, then no read phase will be executed. If
number_of_bytes_to_read is not zero, then number_of_bytes_to_readwill be read from the
bus and loaded into the response packet.
The return packet will be:
type: 0x40 | 0x14 = 0x54 = 8410
data_length = 2 to 16
data[0] = device index (0-31 valid)
data[data_length-2] = Data read from the One-Wire bus. This is the same
as number_of_bytes_to_read from the command.
data[data_length-1] = One-Wire CRC
21 (0x15): Set Up Live Fan or Temperature Display
You can configure the CFA633 to automatically update a portion of the LCD with a “live” RPM or
temperature reading. Once the display is configured using this command, the CFA633 will continue to
display the live reading on the LCD without host intervention. The Set Up Live Fan or Temperature
Display is one of the items stored by command 4 (0x04): Store Current State as Boot State, so you
can configure the CFA633 to immediately display fan speeds or system temperatures as soon as
power is applied.
The live display is based on a concept of display slots. There are 8 slots, and each of the 8 slots may
be enabled or disabled independently.
Any slot may be requested to display any data that is available. For instance, slot 0 could display
temperature sensor 3 in °C, while slot 1 could simultaneously display temperature sensor 3 in °F.
Any slot may be positioned at any location on the LCD, as long as all the digits of that slot fall fully
within the display area. It is legal to have the display area of one slot overlap the display area of
another slot, but senseless. This situation should be avoided in order to have meaningful information
displayed.
type: 0x15 = 2110
valid data_length is 7 or 2 (for turning a slot off)
Page | 42
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
data[0]: display slot (0-7)
data[1]: type of item to display in this slot
0 = nothing (data_length then must be 2)
1 = fan tachometer RPM (data_length then must be 7)
2 = temperature (data_length then must be 7)
data[2]: index of the sensor to display in this slot:
0-3 are valid for fans
0-31 are valid for temperatures (and the temperature
device must be attached)
data[3]: number of digits
for a fan: 4 digits (0 to 9999) valid fan speed range
for a fan: 5 digits (0 to 50000) valid fan speed range
for a temperature: 3 digits (-XX or XXX)
for a temperature: 5 digits (-XX.X or XXX.X)
data[4]: display column
0-13 valid for a 3-digit temperature
0-12 valid for a 4-digit fan
0-11 valid for a 5-digit fan or temperature
data[5]: display row (0-1 valid)
data[6]: pulses_per_revolution or temperature units
for a fan: pulses per revolution for this fan (1 to 32)
for a temperature: units (0 = deg C, 1 = deg F)
If a One-Wire CRC error is detected, the temperature will be displayed as "ERR" or "ERROR".
If the frequency of the tachometer signal is below the detectable range, the speed will be displayed as
"SLOW" or "STOP".
Displaying a fan will override the fan power setting to 100% for up to 1/8 of a second every 1/2
second, see Fan Connections for a detailed description.
The return packet will be:
type: 0x40 | 0x15 = 0x55 = 8510
data_length = 0
22 (0x16): Send Command Directly to the LCD Controller
The controller on the CFA633 is HD44780 compatible. Generally, you won’t need low-level access to
the LCD controller but some arcane functions of the HD44780 are not exposed by the CFA633’s
command set. This command allows you to access the CFA633’s LCD controller directly.
IMPORTANT: It is possible to corrupt the CFA633 display using this command.
type: 0x16 = 2210
data_length: 2
data[0]: location code
0 = "Data" register
1 = "Control" register
data[1]: data to write to the selected register
The return packet will be:
type: 0x40 | 0x16 = 0x56 = 8610
data_length = 0
23 (0x17): Configure Key Reporting
By default, the CFA633 reports any key event to the host. This command allows the key events to be
enabled or disabled on an individual basis. The key events set to report are one of the items stored
by the command 4 (0x04): Store Current State as Boot State.
Page | 43
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
#define KP_UP
0x01
0x02
0x04
0x08
0x10
0x20
#define KP_ENTER
#define KP_CANCEL
#define KP_LEFT
#define KP_RIGHT
#define KP_DOWN
type: 0x17 = 2310
data_length = 2
data[0]: press mask
data[1]: release mask
The return packet will be:
type: 0x40 | 0x17 = 0x57 = 8710
data_length = 0
Configure Key Reporting is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
24 (0x18): Read Keypad, Polled Mode
In some situations, it may be convenient for the host to poll the CFA633 for key activity. This
command allows the host to detect which keys are currently pressed, which keys have been pressed
since the last poll, and which keys have been released since the last poll.
This command is independent of the key reporting masks set by command 23 (0x17): Configure Key
Reporting. All keys are always visible to this command. Typically, both masks of command 23 would
be set to "0" if the host is reading the keypad in polled mode.
#define KP_UP
0x01
0x02
0x04
0x08
0x10
0x20
#define KP_ENTER
#define KP_CANCEL
#define KP_LEFT
#define KP_RIGHT
#define KP_DOWN
type: 0x18 = 2410
data_length = 0
The return packet will be:
type: 0x40 | 0x18 = 0x58 = 8810
data_length = 3
data[0] = bit mask showing the keys currently pressed
data[1] = bit mask showing the keys that have been pressed since the last poll
data[2] = bit mask showing the keys that have been released since the last poll
25 (0x19): Set Fan Power Fail-Safe
The CFA633 can be used as part of an active cooling system. For instance, the fans in a system can
be slowed down to reduce noise when a system is idle or when the ambient temperature is low, and
sped up when the system is under heavy load or the ambient temperature is high.
Since there are a very large number of ways to control the speed of the fans (thresholds, thermostat,
proportional, PID, multiple temperature sensors contributing to the speed of several fans, etc.), there
was no way to foresee the particular requirements of your system and include an algorithm in the
CFA633’s firmware that would be an optimal fit for your application.
Page | 44
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Varying fan speeds under host software control gives the ultimate flexibility in system design but
would typically have a fatal flaw: a host software or hardware failure could cause the cooling system
to fail. If the fans were set at a slow speed when the host software failed, system components may be
damaged due to inadequate cooling.
The fan power fail-safe command allows host control of the fans without compromising safety. When
the fan control software activates, it should set the fans that are under its control to fail-safe mode
with an appropriate timeout value. If for any reason the host fails to update the power of the fans
before the timeout expires, the fans previously set to fail- safe mode will be forced to 100% power.
#define FAN_1
#define FAN_2
#define FAN_3
#define FAN_4
0x01
0x02
0x04
0x08
type = 0x19 = 2510
data_length = 2
data[0] = bit mask of fans set to fail-safe (1-15 valid)
data[1] = timeout value in 1/8 second ticks:
1 = 1/8 second
2 = 1/4 second
255 = 31 7/8 seconds
The return packet will be:
type = 0x40 | 0x19 = 0x59 = 8910
data_length = 0
26 (0x1A): Set Fan Tachometer Glitch Filter
The CFA633 controls fan speed by using PWM. Using PWM turns the power to a fan on and off
quickly to change the average power delivered to the fan. The CFA633 uses approximately 18 Hz for
the PWM repetition rate. The fan’s tachometer output is only valid if power is applied to the fan. Most
fans produce a valid tachometer output very quickly after the fan has been turned back on but some
fans take time after being turned on before their tachometer output is valid.
This command allows you to set a variable-length delay after the fan has been turned on before the
CFA633 will recognize transitions on the tachometer line. The delay is specified in counts, each count
being nominally 552.5 µS long (1/100 of one period of the 18 Hz PWM repetition rate).
In practice, most fans will not need the delay to be changed from the default length of 1 count. If a
fan’s tachometer output is not stable when its PWM setting is other than 100%, simply increase the
delay until the reading is stable.
Typically, you would (1) start at a delay count of 50 or 100, (2) reduce it until the problem reappears,
and then (3) slightly increase the delay count to give it some margin.
Setting the glitch delay to higher values will make the RPM monitoring slightly more intrusive at low
power settings. Also, the higher values will increase the lowest speed that a fan with RPM reporting
enabled will seek at 0% power setting.
The Fan Glitch Delay is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
type = 0x1A = 2610
data_length = 4
data[0] = delay count of fan 1
data[1] = delay count of fan 2
data[2] = delay count of fan 3
data[3] = delay count of fan 4
Page | 45
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
The return packet will be:
type = 0x40 | 0x1A = 0x5A = 9010
data_length = 0
27 (0x1B): Query Fan Power & Fail-Safe Mask
This command can be used to verify the current fan power and verify which fans are set to fail-safe
mode.
#define FAN_1
#define FAN_2
#define FAN_3
#define FAN_4
0x01
0x02
0x04
0x08
type = 0x1B = 2710
data_length = 0
The return packet will be:
type = 0x40 | 0x1B = 0x5B = 9110
data_length = 5
data[0] = fan 1 power
data[1] = fan 2 power
data[2] = fan 3 power
data[3] = fan 4 power
data[4] = bit mask of fans with fail-safe set
28 (0x1C): Set ATX Power Switch Functionality
The combination of the CFA633 with the Crystalfontz WR-PWR-Y14 cable can be used to replace the
function of the power and reset switches in a standard ATX-compatible system. The ATX Power
Switch Functionality is one of the items stored by the command 4 (0x04): Store Current State as Boot
State.
Page | 46
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
REGARDING COMMAND 28: SET ATX SWITCH FUNCTIONALITY
The GPIO pins used for ATX control must not be configured as user GPIO. The pins must be
configured to their default drive mode in order for the ATX functions to work correctly.
These settings are factory default but may be changed by the user. Please see command
34 (0x22): Set or Set and Configure GPIO Pins. These settings must be saved as the boot
state.
To ensure that GPIO[1] will operate correctly as ATX SENSE, user GPIO[1] must be
configured as:
DDD = "011: 1=Resistive Pull Up, 0=Fast, Strong Drive Down". F = "0:
Port unused for user GPIO."
This configuration can be assured by sending the following command:
command = 34
length = 3
data[0] = 1
data[1] = 0
data[2] = 3
To ensure that GPIO[2] will operate correctly as ATX POWER, user GPIO[2] must be
configured as:
DDD = "010: Hi-Z, use for input".
F = "0: Port unused for user GPIO."
This configuration can be assured by sending the following command:
command = 34
length = 3
data[0] = 2
data[1] = 0
data[2] = 2
To ensure that GPIO[3] will operate correctly as ATX RESET, user GPIO[3] must be
configured as:
DDD = "010: Hi-Z, use for input".
F = "0: Port unused for user GPIO."
This configuration can be assured by sending the following command:
command = 34
length = 3
data[0] = 3
data[1] = 0
data[2] = 2
These settings must be saved as the boot state.
The RESET (GPIO[3]) and POWER CONTROL (GPIO[2]) lines on the CFA633 are normally high-
impedance. Electrically, they appear to be disconnected or floating. When the CFA633 asserts the
RESET or POWER CONTROL lines, they are momentarily driven high or low (as determined by the
AUTO_POLARITY, RESET_INVERT or POWER_INVERT bits, detailed below). To end the power or
reset pulse, the CFA633 changes the lines back to high- impedance.
Page | 47
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
Four Functions may be Enabled by Command 28
Function 1: KEYPAD_RESET
If POWER-ON SENSE (GPIO[1]) is high, holding the green check key for 4 seconds will pulse RESET
(GPIO[3]) pin for 1 second. During the 1-second pulse, the CFA633 will show "RESET", and then the
CFA633 will reset itself, showing its boot state as if it had just powered on. Once the pulse has finished,
the CFA633 will not respond to any commands until after it has reset the host and itself.
Function 2: KEYPAD_POWER_ON
If POWER-ON SENSE (GPIO[1]) is low, pressing the green check key for 0.25 seconds will pulse
POWER CONTROL (GPIO[2]) for the duration specified by in data[1] or the default of 1 second.
During this time the CFA633 will show "POWER ON", then the CFA633 will reset itself.
Function 3: KEYPAD_POWER_OFF
If POWER-ON SENSE (GPIO[1]) is high, holding the red X key for 4 seconds will pulse POWER
CONTROL (GPIO[2]) for the duration specified by in data[1] or the default of 1 second. If the user
continues to hold the power key down, then the CFA633 will continue to drive the line for a maximum of
5 additional seconds. During this time the CFA633 will show "POWER OFF".
Function 4: LCD_OFF_IF_HOST_IS_OFF
If LCD_OFF_IF_HOST_IS_OFF is set, the CFA633 will blank its screen and turn off its backlight to
simulate its power being off any time POWER-ON SENSE is low.
By default, there is an internal POWER-ON-SENSE connected to the +5v pin of J_PWR,
selected by setting data [2] to 1. Alternatively, GPIO[1] may be configured to act as
POWER-ON-SENSE through R21 of 5K, and specifying data[2] as 0. The CFA633 will still
be active (since it is powered by VSB, standby power which is always-on), monitoring the
keypad for a power-on keystroke. Once POWER-ON-SENSE goes high, the CFA633 will
reboot as if power had just been applied to it.
#define AUTO_POLARITY
0x01 //Automatically detects polarity for reset
and//power (recommended)
0x02 //Reset pin drives high instead of low
0x04 //Power pin drives high instead of low
0x10
0x20
0x40
0x80
#define RESET_INVERT
#define POWER_INVERT
#define LCD_OFF_IF_HOST_IS_OFF
#define KEYPAD_RESET
#define KEYPAD_POWER_ON
#define KEYPAD_POWER_OFF
type: 0x1C = 2810
data_length: 1 or 2
data[0]: bit mask of enabled functions
data[1]: (optional) length of power on & off pulses in 1/32 second
1 = 1/32 sec
2 = 1/16 sec
16 = 1/2 sec
254 = 7.9 seconds
255 = Assert power control line until host power state changes
The return packet will be:
type: 0x40 | 0x1C = 0x5C = 9210
data_length: 0
Page | 48
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
29 (0x1D): Enable/Disable and Reset the Watchdog
Some high-availability systems use hardware watchdog timers to ensure that a software or hardware
failure does not result in an extended system outage. Once the host system has booted, a system
monitor program is started. The system monitor program would enable the watchdog timer on the
CFA633. If the system monitor program fails to reset the CFA633’s watchdog timer, the CFA633 will
reset the host system.
The GPIO pins used for ATX control must not be configured as user GPIO. They must be
configured to their default drive mode in order for the ATX functions to work correctly. These
settings are factory default, but may be changed by the user. See the note under command
28 (0x1C): Set ATX Power Switch Functionality or command 34 (0x22): Set or Set and
Configure GPIO Pins.
type: 0x1D = 2910
data_length = 1
data[0] = enable/timeout
If timeout is 0, the watchdog is disabled.
If timeout is 1-255, then this command must be issued again within timeout seconds to
avoid a watchdog reset.
To turn the watchdog off once it has been enabled, simply set timeout to 0.
If the command is not re-issued within timeout seconds, then the CFA633 will reset
the host (see command 28 for details). Since the watchdog is off by default when the
CFA633 powers up, the CFA633 will not issue another host reset until the host has
once again enabled the watchdog.
The return packet will be:
type: 0x40 | 0x1D = 0x5D = 9310
data_length = 0
30 (0x1E): Read Reporting & Status
This command can be used to verify the current items configured to report to the host, as well as
some other miscellaneous status information. Please note that the information returned by other
modules is not identical to this.
type = 0x1E = 3010
data_length = 0
The return packet will be:
type = 0x40 | 0x1E = 0x5E = 9410
data_length = 15
data[0] = fan 1-4 reporting status (as set by command 16)
data[1] = temperatures 1-8 reporting status (as set by command 19)
data[2] = temperatures 9-15 reporting status (as set by command 19)
data[3] = temperatures 16-23 reporting status (as set by command 19)
data[4] = temperatures 24-32 reporting status (as set by command 19)
data[5] = key presses (as set by command 23)
data[6] = key releases (as set by command 23)
data[7] = ATX Power Switch Functionality (as set by command 28)
data[8] = current watchdog counter (as set by command 29)
data[9] = fan RPM glitch delay[0] (as set by command 26)
data[10] = fan RPM glitch delay[1] (as set by command 26)
data[11] = fan RPM glitch delay[2] (as set by command 26)
data[12] = fan RPM glitch delay[3] (as set by command 26)
data[13] = contrast setting (as set by command 13)
data[14] = backlight setting (as set by command 14)
Page | 49
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
NOTE: Previous and future firmware versions may return fewer or additional bytes.
31 (0x1F): Send Data to LCD
This command allows data to be placed at any position on the LCD.
type: 0x1F = 3110
data_length = 3 to 18
data[0]: col = x = 0 to 15
data[1]: row = y = 0 to 1
data[2-21]: text to place on the LCD, variable from 1 to 16 characters
The return packet will be:
type: 0x40 | 0x1F = 0x5F = 9510
data_length = 0
Send Data to LCD is one of the items stored by the command 4 (0x04): Store Current State as Boot
State.
32 Reserved for CFA631 Key Legends
33 (0x21): Set Baud Rate
This command will change the CFA633’s baud rate. The CFA633 will send the acknowledge packet
for this command and change its baud rate to the new value. The host should send the baud rate
command, wait for a positive acknowledge from the CFA633 at the old baud rate, and then switch
itself to the new baud rate. The baud rate must be saved by the command 4 (0x04): Store Current
State as Boot State if you want the CFA633 to power up at the new baud rate.
The factory default baud rate is 19200.
type: 0x21 = 3310
data_length = 0
data[0]: 0 = 19200 baud
1 = 115200 baud
The return packet will be:
type: 0x40 | 0x21 = 0x61 = 9710
data_length = 0
34 (0x22): Set or Set and Configure GPIO Pins
The CFA633 (hardware versions v1.4 and up, firmware versions 1.9 and up) has five pins for user-
definable general-purpose input / output (GPIO). These pins are shared with the DOW and ATX
functions. Be careful when you configure the GPIO if you want to use the ATX or DOW at the same
time.
The architecture of the CFA633 allows great flexibility in the configuration of the GPIO pins. They can
be set as input or output. They can output constant high or low signals or a variable duty cycle 100 Hz
PWM signal.
In output mode using the PWM (and a suitable current limiting resistor), an LED may be turned on or
off and even dimmed under host software control. With suitable external circuitry, the GPIOs can also
be used to drive external logic or power transistors.
The CFA633 continuously polls the GPIOs as inputs at 32 Hz. The present level can be queried by
the host software at a lower rate. The CFA633 also keeps track of whether there were rising or falling
edges since the last host query (subject to the resolution of the 32 Hz sampling). This means that the
host is not forced to poll quickly in order to detect short events. The algorithm used by the CFA633 to
read the inputs is inherently “bounce-free”.
Page | 50
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
The GPIOs also have “pull-up” and “pull-down” modes. These modes can be useful when using the
GPIO as an input connected to a switch since no external pull-up or pull-down resistor is needed. For
instance, the GPIO can be set to pull up. Then when a switch connected between the GPIO and
ground is open, reading the GPIO will return a "1". When the switch is closed, the input will return a
"0".
Pull-up/pull-down resistance values are approximately 5kΩ. Do not exceed current of 25 mA per
GPIO.
REGARDING SETTING AND CONFIGURING GPIO PINS
The GPIO pins may also be used for ATX control through header J8 and temperature
sensing through the CFA633’s DOW header. By factory default, the GPIO output setting,
function, and drive mode are set correctly to enable operation of the ATX and DOW
functions. The GPIO output setting, function, and drive mode must be set to the
correct values in order for the ATX and DOW functions to work. Improper use of this
command can disable the ATX and DOW functions. The cfTest may be used to easily
check and reset the GPIO configuration to the default state so the ATX and DOW functions
will work.
The GPIO configuration is one of the items stored by the command 4 (0x04): Store Current State as
Boot State.
type: 0x22 = 3410
data_length:
2
3
bytes to change value only
bytes to change value and configure function and drive mode
data[0]: index of GPIO to modify
0 = GPIO[0] = J8, Pin 7
1 = GPIO[1] = J8, Pin 6 (default is ATX Host Power Sense)
2 = GPIO[2] = J8, Pin 5 (default is ATX Host Power Control)
3 = GPIO[3] = J8, Pin 4 (default is ATX Host Reset Control)
4 = GPIO[4] = J9, Pin 2 (default is DOW I/O--always has 1kΩ hardware
pull-up)
5-255 = reserved
NOTE: Future versions of this command on future hardware models may accept additional values for
data [0], which would control the state of future additional GPIO pins.
data[1] = Pin output state (actual behavior depends on drive mode):
0 = Output set to low
1-99 = Output duty cycle percentage (100 Hz nominal)
100 = Output set to high
101-255 = invalid
Page | 51
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
data[2] = Pin function select and drive mode (optional, 0-15 valid)
---- FDDD
|||| ||||-- DDD = Drive Mode (based on output state of 1 or 0)
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
=======================================================
000: 1=Fast, Strong Drive Up, 0=Resistive Pull Down
001: 1=Fast, Strong Drive Up, 0=Fast, Strong Drive Down
010: Hi-Z, use for input
011: 1=Resistive Pull Up,
0=Fast, Strong Drive Down
100: 1=Slow, Strong Drive Up, 0=Hi-Z
101: 1=Slow, Strong Drive Up, 0=Slow, Strong Drive Down
110: reserved, do not use
111: 1=Hi-Z,
0=Slow, Strong Drive Down
|||| |----- F = Function
||||
||||
||||
||||
||||
||||
||||
||||
||||
||||
=======================================================
0: Port unused for GPIO. It will take on the default
function such as ATX, DOW or unused. The user is
responsible for setting the drive to the correct
value in order for the default function to work
correctly.
1: Port used for GPIO under user control. The user is
responsible for setting the drive to the correct
value in order for the desired GPIO mode to work
correctly.
||||------- reserved, must be 0
The return packet will be:
type = 0x40 | 0x22 = 0x62 = 9810
data_length = 0
35 (0x23): Read GPIO Pin Levels and Configuration State
See command 34 (0x22): Set or Set and Configure GPIO Pins for details on the GPIO architecture.
type: 0x23 = 3510
data_length: 1
data[0]: index of GPIO to query
0 = GPIO[0] = J8, Pin 7
1 = GPIO[1] = J8, Pin 6 (default is ATX Host Power Sense)
2 = GPIO[2] = J8, Pin 5 (default is ATX Host Power Control)
3 = GPIO[3] = J8, Pin 4 (default is ATX Host Reset Control)
4 = GPIO[4] = J9, Pin 2 (default is DOW I/O--always has 1K
∧hardware
pull-up on
SCAB.)
5-255 = reserved
NOTE: Future versions of this command on future hardware models may accept additional values for
data [0], which would return the status of future additional GPIO pins.
The return packet will be:
type = 0x40 | 0x23 = 0x63 = 9910
data_length = 4
Page | 52
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
returns:
data[0] = index of GPIO read
data[1] = Pin state & changes since last poll
---- -RFS Enable Reporting of this Fan’s Tach Input
|||| ||||-- S = state at the last reading
|||| |||--- F = at least one falling edge has
|||| ||
|||| ||---- R = at least one rising edge has
|||| | been detected since the last poll
|||| |----- reserved
been detected since the last poll
(This reading is the actual pin state, which may or may not agree with
the pin setting, depending on drive mode and the load presented by external
circuitry. The pins are polled at approximately 32 Hz asynchronously with
respect to this command. Transients that happen between polls will not be
detected.)
data[2] = Requested Pin level/PWM level
0-100: Output duty cycle percentage
(This value is the requested PWM duty cycle. The actual pin may or may
not be toggling in agreement with this value, depending on the drive mode
and the load presented by external circuitry)
data[3] = Pin function select and drive mode
---- FDDD
|||| ||||-- DDD = Drive Mode
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
|||| |
=======================================================
000: 1=Fast, Strong Drive Up, 0=Resistive Pull Down
001: 1=Fast, Strong Drive Up, 0=Fast, Strong Drive Down
010: Hi-Z, use for input
011: 1=Resistive Pull Up,
0=Fast, Strong Drive Down
100: 1=Slow, Strong Drive Up, 0=Hi-Z
101: 1=Slow, Strong Drive Up, 0=Slow, Strong Drive Down
110: reserved
111: 1=Hi-Z,
0=Slow, Strong Drive Down
|||| |----- F = Function
||||
||||
||||
||||
||||
||||
||||
||||
||||
||||
=======================================================
0: Port unused for GPIO. It will take on the default
function such as ATX, DOW or unused. The user is
responsible for setting the drive to the correct
value in order for the default function to work
correctly.
1: Port used for GPIO under user control. The user is
responsible for setting the drive to the correct
value in order for the desired GPIO mode to work
correctly.
||||------- reserved, will return 0
Page | 53
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
12. Character Generator ROM (CGROM)
To find the code for a given character, add the two numbers that are shown in bold for its row and
column. For example, the Greek letter "β" is in the column labeled “224d” and in the row labeled “2d”.
Add 224 + 2 to get 226. When you send a byte with the value of 226 to the display, the Greek letter
"β" will be shown.
Figure 14. Character Generator ROM (CGROM)
Page | 54
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
13. LCD Module Reliability and Longevity
We work to continuously improve our products, including backlights that are brighter and last longer.
Slight color variations from module to module and batch to batch are normal. If you need modules
with consistent color, please ask for a custom order.
Item
Specification
LCD portion (excluding Keypad and Backlights)
Keypad rated lifetime
50,000 to 100,000 hours (typical)
1,000,000keystrokes
Yellow-Green LED Keypad Backlight
High Brightness Yellow-Green LED Display Backlights
50,000 to 100,000 hours (typical)
% of Initial
Brightness
Power-On Hours
<10,000
NOTE: We recommend that the backlight of the High
Brightness Yellow-Green backlit modules be dimmed or turned
off during periods of inactivity to conserve the High Brightness
Yellow-Green LED backlight lifetime.
>90%
<50,000
>50%
13.1. Module Longevity (EOL / Replacement Policy)
Crystalfontz is committed to making all of our LCD modules available for as long as possible. For
each module that we introduce, we intend to offer it indefinitely. We do not preplan a module's
obsolescence. The majority of modules we have introduced are still available.
We recognize that discontinuing a module may cause problems for some customers. However,
rapidly changing technologies, component availability, or low customer order levels may force us to
discontinue (“End of Life”, EOL) a module. For example, we must occasionally discontinue a module
when a supplier discontinues a component or a manufacturing process becomes obsolete. When we
discontinue a module, we will do our best to find an acceptable replacement module with the same fit,
form, and function.
In most situations, you will not notice a difference when comparing a “fit, form, and function”
replacement module to the discontinued module it replaces. However, sometimes a change in
component or process for the replacement module results in a slight variation, perhaps an
improvement, over the previous design.
Although the replacement module is still within the stated Datasheet specifications and tolerances of
the discontinued module, changes may require modification to your circuit and/or firmware. Possible
changes include:
•
Backlight LEDs. Brightness may be affected (perhaps the new LEDs have better efficiency) or the
current they draw may change (new LEDs may have a different VF).
•
•
Controller. A new controller may require minor changes in your code.
Component tolerances. Module components have manufacturing tolerances. In extreme cases, the
tolerance stack can change the visual or operating characteristics.
Please understand that we avoid changing a module whenever possible; we only discontinue a
module if we have no other option. We post Part Change Notices (PCN) on the product's website
page as soon as possible. If interested, you can subscribe to future Part Change Notices.
Page | 55
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
14. Care and Handling Precautions
For optimum operation of the CFA633-YYH-KS and to prolong its life, please follow the precautions
described below.
14.1. ESD (Electrostatic Discharge)
Tx and Rx pins of connector RS-232 only:
+15 kV Human Body Model
+15 kV IEC1000-4-2 Air Discharge
+8 kV IEC1000-4-2 Contact Discharge
The remainder of this circuitry is industry standard CMOS logic and susceptible to ESD damage.
Please use industry standard antistatic precautions as you would for any other static sensitive
devices such as expansion cards, motherboards, or integrated circuits. Ground your body, work
surfaces, and equipment.
14.2. Design and Mounting
•
The exposed surface of the “glass” is actually a polarizer laminated on top of the glass. To protect the
soft plastic polarizer from damage, the module ships with a protective film over the polarizer. Please
peel off the protective film slowly. Peeling off the protective film abruptly may generate static
electricity.
•
•
The polarizer is made out of soft plastic and is easily scratched or damaged. When handling the
module, avoid touching the polarizer. Finger oils are difficult to remove.
CFA633-YYH-KS without Crystalfontz overlay: To protect the soft plastic polarizer from damage,
place a transparent plate (for example, acrylic, polycarbonate or glass) in front of the module, leaving
a small gap between the plate and the display surface.
•
•
•
Do not disassemble or modify the module.
Do not modify the six tabs of the metal bezel or make connections to them.
Do not reverse polarity to the power supply connections. Reversing polarity will immediately ruin the
module.
14.3. Avoid Shock, Impact, Torque, or Tension
•
•
•
•
Do not expose the CFA633-YYH-KS to strong mechanical shock, impact, torque, or tension.
Do not drop, toss, bend, or twist the CFA633-YYH-KS.
Do not place weight or pressure on the CFA633-YYH-KS.
If the LCD panel breaks, be careful to not get the liquid crystal fluid in your mouth or eyes. If the liquid
crystal fluid touches your skin, clothes, or work surface, wash it off immediately using soap and
plenty of water.
14.4. If LCD Panel Breaks
•
•
If the LCD panel breaks, be careful to not get the liquid crystal fluid in your mouth or eyes.
If the liquid crystal fluid touches your skin, clothes, or work surface, wash it off immediately using soap
and plenty of water.
14.5. Cleaning
•
•
•
The polarizer (laminated to the glass) is soft plastic. The soft plastic is easily scratched or damaged.
Be very careful when you clean the polarizer.
Do not clean the polarizer with liquids. Do not wipe the polarizer with any type of cloth or swab (for
example, Q-tips).
Use the removable protective film to remove smudges (for example, fingerprints) and any foreign
matter. If you no longer have the protective film, use standard transparent office tape (for example,
Scotch® brand “Crystal Clear Tape”). If the polarizer is dusty, you may carefully blow it off with clean,
dry, oil-free compressed air.
Page | 56
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
•
CFA633-YYH-KS without Crystalfontz overlay: The exposed surface of the LCD “glass” is actually the
front polarizer laminated to the glass. The polarizer is made out of a fairly soft plastic and is easily
scratched or damaged. The polarizer will eventually become hazy if you do not take great care when
cleaning it. Long contact with moisture (from condensation or cleaning) may permanently spot or stain
the polarizer.
14.6. Operation
•
•
Your circuit should be designed to protect the CFA633 from ESD and power supply transients.
Observe the operating temperature limitations: a minimum of -20°C to a maximum of +70°C with
minimal fluctuation. Operation outside of these limits may shorten life and/or harm display.
At lower temperatures of this range, response time is delayed.
At higher temperatures of this range, display becomes dark. (You may need to adjust the contrast.)
Operate away from dust, moisture, and direct sunlight.
•
•
•
•
Adjust backlight brightness so the display is readable but not too bright. Dim or turn off the backlight
during periods of inactivity to conserve the high-brightness yellow-green LED backlight lifetime.
14.7. Storage and Recycling
•
•
Store in an ESD-approved container away from dust, moisture, and direct sunlight.
Observe the storage temperature limitations: -30°C minimum, +80°C maximum with minimal
fluctuation. Rapid temperature changes can cause moisture to form, resulting in permanent damage.
Do not allow weight to be placed on the CFA633 while they are in storage.
•
•
Please recycle your outdated Crystalfontz modules at an approved facility.
Page | 57
15. Mechanical Drawings
CFA633 Module Outline Drawing (1 of 2)
Page | 58
CFA633 Module Outline Drawing (2 of 2)
Page | 59
Keypad Detail Drawing
Page | 60
Panel Mounting Application Cutout Drawing
Page | 61
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
16. Appendix A: Demonstration Software and Sample Code
Sample Code
We encourage you to use the free sample code listed below. Please leave the original copyrights in the
code.
•
•
•
Windows compatible test/demonstration program and source.
https://www.crystalfontz.com/product/cftest
Linux compatible command-line demonstration program with C source code. 8K.
https://www.crystalfontz.com/product/linuxexamplecode
Supported by CrystalControl freeware.
https://www.crystalfontz.com/product/CrystalControl2.html
In addition, see http://lcdproc.org/hardware.php3 for Linux LCD drivers. LCDproc is an open source
project that supports many of the Crystalfontz displays.
Algorithms to Calculate the CRC
Below are eight sample algorithms that will calculate the CRC of a CFA633 packet. Some of the
algorithms were contributed by forum members and originally written for CFA631 and CFA635. The CRC
used in the CFA633 is the same one that is used in IrDA, which came from PPP, which seems to be
related to a CCITT (ref: Network Working Group Request for Comments: 1171) standard. At that point,
the trail was getting a bit cold and diverged into several referenced articles and papers, dating back to
1983.
16
12
5
0
The polynomial used is X + X + X + X (0x8408)
The result is bit-wise inverted before being returned.
Algorithm 1: “C” Table Implementation
This algorithm is typically used on the host computer, where code space is not an issue.
//This code is from the IRDA LAP documentation, which appears to
//have been copied from PPP:
//
//
http://irda.affiniscape.com/associations/2494/files/Specifications/
IrLAP11_Plus_Errata.zip
//
//I doubt that there are any worries about the legality of this code,
//searching for the first line of the table below, it appears that
//the code is already included in the linux 2.6 kernel "Driver for
//ST5481 USB ISDN modem". This is an "industry standard" algorithm
//and I do not think there are ANY issues with it
at all. typedef unsigned char ubyte;
typedef unsigned short word;
word get_crc(ubyte *bufptr,word len)
{
//CRC lookup table to avoid bit-shifting loops.
static const word crcLookupTable[256] =
{0x00000,0x01189,0x02312,0x0329B,0x04624,0x057AD,0x06536,0x074BF,
0x08C48,0x09DC1,0x0AF5A,0x0BED3,0x0CA6C,0x0DBE5,0x0E97E,0x0F8F7,
0x01081,0x00108,0x03393,0x0221A,0x056A5,0x0472C,0x075B7,0x0643E,
0x09CC9,0x08D40,0x0BFDB,0x0AE52,0x0DAED,0x0CB64,0x0F9FF,0x0E876,
0x02102,0x0308B,0x00210,0x01399,0x06726,0x076AF,0x04434,0x055BD,
0x0AD4A,0x0BCC3,0x08E58,0x09FD1,0x0EB6E,0x0FAE7,0x0C87C,0x0D9F5,
0x03183,0x0200A,0x01291,0x00318,0x077A7,0x0662E,0x054B5,0x0453C,
0x0BDCB,0x0AC42,0x09ED9,0x08F50,0x0FBEF,0x0EA66,0x0D8FD,0x0C974,
0x04204,0x0538D,0x06116,0x0709F,0x00420,0x015A9,0x02732,0x036BB,
0x0CE4C,0x0DFC5,0x0ED5E,0x0FCD7,0x08868,0x099E1,0x0AB7A,0x0BAF3,
0x05285,0x0430C,0x07197,0x0601E,0x014A1,0x00528,0x037B3,0x0263A,
Page | 62
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
0x0DECD,0x0CF44,0x0FDDF,0x0EC56,0x098E9,0x08960,0x0BBFB,0x0AA72,
0x06306,0x0728F,0x04014,0x0519D,0x02522,0x034AB,0x00630,0x017B9,
0x0EF4E,0x0FEC7,0x0CC5C,0x0DDD5,0x0A96A,0x0B8E3,0x08A78,0x09BF1,
0x07387,0x0620E,0x05095,0x0411C,0x035A3,0x0242A,0x016B1,0x00738,
0x0FFCF,0x0EE46,0x0DCDD,0x0CD54,0x0B9EB,0x0A862,0x09AF9,0x08B70,
0x08408,0x09581,0x0A71A,0x0B693,0x0C22C,0x0D3A5,0x0E13E,0x0F0B7,
0x00840,0x019C9,0x02B52,0x03ADB,0x04E64,0x05FED,0x06D76,0x07CFF,
0x09489,0x08500,0x0B79B,0x0A612,0x0D2AD,0x0C324,0x0F1BF,0x0E036,
0x018C1,0x00948,0x03BD3,0x02A5A,0x05EE5,0x04F6C,0x07DF7,0x06C7E,
0x0A50A,0x0B483,0x08618,0x09791,0x0E32E,0x0F2A7,0x0C03C,0x0D1B5,
0x02942,0x038CB,0x00A50,0x01BD9,0x06F66,0x07EEF,0x04C74,0x05DFD,
0x0B58B,0x0A402,0x09699,0x08710,0x0F3AF,0x0E226,0x0D0BD,0x0C134,
0x039C3,0x0284A,0x01AD1,0x00B58,0x07FE7,0x06E6E,0x05CF5,0x04D7C,
0x0C60C,0x0D785,0x0E51E,0x0F497,0x08028,0x091A1,0x0A33A,0x0B2B3,
0x04A44,0x05BCD,0x06956,0x078DF,0x00C60,0x01DE9,0x02F72,0x03EFB,
0x0D68D,0x0C704,0x0F59F,0x0E416,0x090A9,0x08120,0x0B3BB,0x0A232,
0x05AC5,0x04B4C,0x079D7,0x0685E,0x01CE1,0x00D68,0x03FF3,0x02E7A,
0x0E70E,0x0F687,0x0C41C,0x0D595,0x0A12A,0x0B0A3,0x08238,0x093B1,
0x06B46,0x07ACF,0x04854,0x059DD,0x02D62,0x03CEB,0x00E70,0x01FF9,
0x0F78F,0x0E606,0x0D49D,0x0C514,0x0B1AB,0x0A022,0x092B9,0x08330,
0x07BC7,0x06A4E,0x058D5,0x0495C,0x03DE3,0x02C6A,0x01EF1,0x00F78};
register word
newCrc;
newCrc=0xFFFF;
//This algorithm is based on the IrDA LAP example.
while(len--)
newCrc = (newCrc >> 8) ^ crcLookupTable[(newCrc ^ *bufptr++) & 0xff];
//Make this crc match the one’s complement that is sent in the packet.
return(~newCrc);
}
Algorithm 2: “C” Bit Shift Implementation
This algorithm was mainly written to avoid any possible legal issues about the source of the routine (at
the request of the LCDproc group). This routine was “clean” coded from the definition of the CRC. It is
ostensibly smaller than the table-driven approach but will take longer to execute. This routine is offered
under the GPL.
typedef unsigned char ubyte;
typedef unsigned short word;
word get_crc(ubyte *bufptr,word len)
{
register unsigned int
newCRC;
//Put the current byte in here.
ubyte
data;
int
bit_count;
//This seed makes the output of this shift based algorithm match
//the table based algorithm. The center 16 bits of the 32-bit
//"newCRC" are used for the CRC. The MSb of the lower byte is used
//to see what bit was shifted out of the center 16 bit CRC
//accumulator ("carry flag analog");
newCRC=0x00F32100;
while(len--)
{
//Get the next byte in the stream.
data=*bufptr++;
//Push this byte’s bits through a software
//implementation of a hardware shift & xor.
for(bit_count=0;bit_count<=7;bit_count++)
Page | 63
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
{
//Shift the CRC accumulator
newCRC>>=1;
//The new MSB of the CRC accumulator comes
//from the LSB of the current data byte.
if(data&0x01)
newCRC|=0x00800000;
//If the low bit of the current CRC accumulator was set
//before the shift, then we need to XOR the accumulator
//with the polynomial (center 16 bits of 0x00840800)
if(newCRC&0x00000080)
newCRC^=0x00840800;
//Shift the data byte to put the next bit of the stream
//into position 0.
data>>=1;
}
}
//All the data has been done. Do 16 more bits of 0 data.
for(bit_count=0;bit_count<=15;bit_count++)
{
//Shift the CRC accumulator
newCRC>>=1;
//If the low bit of the current CRC accumulator was set
//before the shift we need to XOR the accumulator with
//0x00840800.
if(newCRC&0x00000080)
newCRC^=0x00840800;
}
//Return the center 16 bits, making this CRC match the one’s
//complement that is sent in the packet.
return((~newCRC)>>8);
}
Algorithm 2B: “C” Improved Bit Shift Implementation
This is a simplified algorithm that implements the CRC.
unsigned short get_crc(unsigned char count,unsigned char *ptr)
{
unsigned short
crc;
//Calculated CRC
unsigned char
i;
//Loop count, bits in byte
unsigned char
data; //Current byte being shifted
crc = 0xFFFF; // Preset to all 1's, prevent loss of leading zeros
while(count--)
{
data = *ptr++;
i = 8;
do
{
if((crc ^ data) & 0x01)
{
crc >>= 1; crc ^= 0x8408;
Page | 64
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
}
else
crc >>= 1;
data >>= 1;
} while(--i != 0);
}
return (~crc);
}
Algorithm 3: “PIC Assembly” Bit Shift Implementation
This routine was graciously donated by one of our customers.
;====================================================================
; Crystalfontz CFA633 PIC CRC Calculation Example
;
; This example calculates the CRC for the hard coded example provided in the
documentation.
;
; It uses "This is a test. " as input and calculates the proper CRC of 0x93FA.
;====================================================================
#include "p16f877.inc"
;====================================================================
; CRC16 equates and storage
;--------------------------------------------------------------------
accuml
accumh
datareg
j
equ
equ
40h
41h
; BYTE - CRC result register high byte
; BYTE - CRC result register high low byte
; BYTE - data register for shift
; BYTE - bit counter for CRC 16 routine
; BYTE - storage for string memory read
;BYTE - index for string memory read
;BYTE - temp storage for CRC routine
equ
42h
equ
equ
equ
equ
43h
44h
45h
46h
Zero
index
savchr
;
seedlo
seedhi
;
polyL
polyH
equ
equ
021h
0F3h
;initial seed for CRC reg lo byte
;initial seed for CRC reg hi byte
equ
equ
008h
084h
;polynomial low byte
;polynomial high byte
;====================================================================
CRC Test Program
;--------------------------------------------------------------------
;
org
0
; reset vector = 0000H
;
clrf
clrf
goto
PCLATH
STATUS
main
; ensure upper bits of PC are cleared
; ensure page bits are cleared
; jump to start of program
;
; ISR Vector
;
org
goto
4
$
; start of ISR
; jump to ISR when coded
;
org
20
; start of main program
main
movlw
movwf
movlw
seedhi
accumh
seedlo
; setup intial CRC seed value.
; This must be done prior to
; sending string to CRC routine.
Page | 65
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
movwf
clrf
accuml
index
;
; clear string read variables
;
main1
movlw
movwf
movfw
call
movwf
movf
HIGH InputStr
PCLATH
; point to LCD test string
; latch into PCL
index
InputStr
Zero
; get index
; get character
; setup for terminator test
; see if terminator
Zero,f
btfsc
goto
STATUS,Z
main2
; skip if not terminator
; else terminator reached, jump out of loop
call
call
incf
goto
CRC16
; calculate new
; send data to LCD
; bump index
; loop
crc
SENDUART
index,f
main1
;
main2
movlw
call
movlw
call
00h
CRC16
00h
; shift accumulator 16 more bits.
; This must be done after sending
; string to CRC routine.
;
CRC16
;
;
comf
comf
accumh,f
accuml,f
; invert result
;
movfw
call
movfw
call
accuml
SENDUART
accumh
; get CRC low byte
; send to LCD
; get CRC hi byte
; send to LCD
SENDUART
;
stop
goto
stop
; word result of 0x93FA is in accumh/accuml
;====================================================================
; calculate CRC of input byte
;--------------------------------------------------------------------
CRC16
movwf
movwf
savchr
datareg
; save the input character
; load data register
movlw .
movwf
8
j
; setup number of bits to test
; save to incrementor
_loop
clrc
rrf
rrf
; clear carry for CRC register shift
; perform shift of data into CRC register
;
datareg,f
accumh,f
accuml,f
STATUS,C
_notset
polyL
accuml,F
polyH
accumh,F
rrf
;
btfss
goto
movlw
xorwf
movlw
xorwf
; skip jump if if carry
; otherwise goto next bit
; XOR poly mask with CRC register
;
;
;
_notset
decfsz
goto
movfw
return
j,F
_loop
savchr
; decrement bit counter
; loop if not complete
; restore the input character
; return to calling routine
;====================================================================
; USER SUPPLIED Serial port transmit routine
;--------------------------------------------------------------------
Page | 66
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
SENDUART
return
; put serial xmit routine here
;====================================================================
; test string storage
;--------------------------------------------------------------------
org
0100h
;
InputStr
addwf
dt
PCL,f
7h,10h,"This is a test. ",0
;
;====================================================================
end
Algorithm 4: “Visual Basic” Table Implementation
Visual BASIC has its own challenges as a language (such as initializing static arrays), and it is also
challenging to use Visual BASIC to work with “binary” (arbitrary length character data possibly containing
nulls—such as the “data” portion of the CFA633 packet) data. This routine was adapted from the C table
implementation. The complete project can be found in our forums.
'Written by Crystalfontz America, Inc. 2004 http://www.crystalfontz.com
'Free code, not copyright copyleft or anything else.
'Some visual basic concepts taken from:
'http://www.planet-source code.com/vb/scripts/ShowCode.asp?txtCodeId=21434&lngWId=1
'most of the algorithm is from functions in 633_WinTest:
'http://www.crystalfontz.com/products/633/633_WinTest.zip
'Full zip of the project is available in our forum:
'https://www.crystalfontz.com/forum/showthread.php?postid=9921#post9921
Private Type WORD
Lo As Byte
Hi As Byte
End Type
Private Type PACKET_STRUCT
command As Byte
data_length As Byte
data(22) As Byte
crc As WORD
End Type
Dim crcLookupTable(256) As WORD
Private Sub MSComm_OnComm()
'Leave this here
End Sub
'My understanding of visual basic is very limited--however it appears that
there is no way to initialize an array of structures.
Sub Initialize_CRC_Lookup_Table()
crcLookupTable(0).Lo = &H0
crcLookupTable(0).Hi = &H0
. . .
'For purposes of brevity in this Datasheet, I have removed 251 entries of this
table, the 'full source is available in our forum:
'https://www.crystalfontz.com/forum/showthread.php?postid=9921#post9921
. . .
crcLookupTable(255).Lo = &H78
crcLookupTable(255).Hi = &HF
End Sub
Page | 67
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
'This function returns the CRC of the array at data for length positions
Private Function Get_Crc(ByRef data() As Byte, ByVal length As Integer) As WORD
Dim Index As Integer
Dim Table_Index As Integer
Dim newCrc As WORD newCrc.Lo = &HFF
newCrc.Hi = &HFF
For Index = 0 To length - 1
'exclusive-or the input byte with the low-order byte of the CRC register
'to get an index into crcLookupTable
Table_Index = newCrc.Lo Xor data(Index)
'shift the CRC register eight bits to
the right newCrc.Lo = newCrc.Hi
newCrc.Hi = 0
' exclusive-or the CRC register with the contents of Table at Table_Index
newCrc.Lo = newCrc.Lo Xor crcLookupTable(Table_Index).Lo
newCrc.Hi = newCrc.Hi Xor crcLookupTable(Table_Index).Hi
Next Index
'Invert & return newCrc
Get_Crc.Lo = newCrc.Lo Xor &HFF
Get_Crc.Hi = newCrc.Hi Xor &HFF
End Function
Private Sub Send_Packet(ByRef packet As PACKET_STRUCT)
Dim Index As Integer
'Need to put the whole packet into a linear array
'since you can’t do type overrides. VB, gotta love it.
Dim linear_array(26) As Byte
linear_array(0) = packet.command
linear_array(1) = packet.data_length
For Index = 0 To packet.data_length - 1
linear_array(Index + 2) = packet.data(Index)
Next Index
packet.crc = Get_Crc(linear_array, packet.data_length + 2)
'Might as well move the CRC into the linear array too
linear_array(packet.data_length + 2) = packet.crc.Lo
linear_array(packet.data_length + 3) = packet.crc.Hi
'Now a simple loop can dump it out the port.
For Index = 0 To packet.data_length + 3
MSComm.Output = Chr(linear_array(Index))
Next Index
End Sub
Algorithm 5: “Java” Table Implementation
This code was posted in our forum by user “norm” as a working example of a Java CRC calculation.
public class CRC16 extends Object
{
public static void main(String[] args)
{
byte[] data = new byte[2];
// hw - fw
data[0] = 0x01;
data[1] = 0x00;
System.out.println("hw -fw req");
System.out.println(Integer.toHexString(compute(data)));
// ping
data[0] = 0x00;
data[1] = 0x00;
System.out.println("ping");
System.out.println(Integer.toHexString(compute(data)));
Page | 68
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
// reboot
data[0] = 0x05;
data[1] = 0x00;
System.out.println("reboot");
System.out.println(Integer.toHexString(compute(data)));
// clear lcd
data[0] = 0x06;
data[1] = 0x00;
System.out.println("clear lcd");
System.out.println(Integer.toHexString(compute(data)));
// set line 1
data = new byte[18];
data[0] = 0x07;
data[1] = 0x10;
String text = "Test Test Test ";
byte[] textByte = text.getBytes();
for (int i=0; i < text.length(); i++) data[i+2] = textByte[i];
System.out.println("text 1");
System.out.println(Integer.toHexString(compute(data)));
}
private CRC16()
{
}
private static final int[] crcLookupTable =
{
0x00000,0x01189,0x02312,0x0329B,0x04624,0x057AD,0x06536,0x074BF,
0x08C48,0x09DC1,0x0AF5A,0x0BED3,0x0CA6C,0x0DBE5,0x0E97E,0x0F8F7,
0x01081,0x00108,0x03393,0x0221A,0x056A5,0x0472C,0x075B7,0x0643E,
0x09CC9,0x08D40,0x0BFDB,0x0AE52,0x0DAED,0x0CB64,0x0F9FF,0x0E876,
0x02102,0x0308B,0x00210,0x01399,0x06726,0x076AF,0x04434,0x055BD,
0x0AD4A,0x0BCC3,0x08E58,0x09FD1,0x0EB6E,0x0FAE7,0x0C87C,0x0D9F5,
0x03183,0x0200A,0x01291,0x00318,0x077A7,0x0662E,0x054B5,0x0453C,
0x0BDCB,0x0AC42,0x09ED9,0x08F50,0x0FBEF,0x0EA66,0x0D8FD,0x0C974,
0x04204,0x0538D,0x06116,0x0709F,0x00420,0x015A9,0x02732,0x036BB,
0x0CE4C,0x0DFC5,0x0ED5E,0x0FCD7,0x08868,0x099E1,0x0AB7A,0x0BAF3,
0x05285,0x0430C,0x07197,0x0601E,0x014A1,0x00528,0x037B3,0x0263A,
0x0DECD,0x0CF44,0x0FDDF,0x0EC56,0x098E9,0x08960,0x0BBFB,0x0AA72,
0x06306,0x0728F,0x04014,0x0519D,0x02522,0x034AB,0x00630,0x017B9,
0x0EF4E,0x0FEC7,0x0CC5C,0x0DDD5,0x0A96A,0x0B8E3,0x08A78,0x09BF1,
0x07387,0x0620E,0x05095,0x0411C,0x035A3,0x0242A,0x016B1,0x00738,
0x0FFCF,0x0EE46,0x0DCDD,0x0CD54,0x0B9EB,0x0A862,0x09AF9,0x08B70,
0x08408,0x09581,0x0A71A,0x0B693,0x0C22C,0x0D3A5,0x0E13E,0x0F0B7,
0x00840,0x019C9,0x02B52,0x03ADB,0x04E64,0x05FED,0x06D76,0x07CFF,
0x09489,0x08500,0x0B79B,0x0A612,0x0D2AD,0x0C324,0x0F1BF,0x0E036,
0x018C1,0x00948,0x03BD3,0x02A5A,0x05EE5,0x04F6C,0x07DF7,0x06C7E,
0x0A50A,0x0B483,0x08618,0x09791,0x0E32E,0x0F2A7,0x0C03C,0x0D1B5,
0x02942,0x038CB,0x00A50,0x01BD9,0x06F66,0x07EEF,0x04C74,0x05DFD,
0x0B58B,0x0A402,0x09699,0x08710,0x0F3AF,0x0E226,0x0D0BD,0x0C134,
0x039C3,0x0284A,0x01AD1,0x00B58,0x07FE7,0x06E6E,0x05CF5,0x04D7C,
0x0C60C,0x0D785,0x0E51E,0x0F497,0x08028,0x091A1,0x0A33A,0x0B2B3,
0x04A44,0x05BCD,0x06956,0x078DF,0x00C60,0x01DE9,0x02F72,0x03EFB,
0x0D68D,0x0C704,0x0F59F,0x0E416,0x090A9,0x08120,0x0B3BB,0x0A232,
0x05AC5,0x04B4C,0x079D7,0x0685E,0x01CE1,0x00D68,0x03FF3,0x02E7A,
0x0E70E,0x0F687,0x0C41C,0x0D595,0x0A12A,0x0B0A3,0x08238,0x093B1,
0x06B46,0x07ACF,0x04854,0x059DD,0x02D62,0x03CEB,0x00E70,0x01FF9,
0x0F78F,0x0E606,0x0D49D,0x0C514,0x0B1AB,0x0A022,0x092B9,0x08330,
0x07BC7,0x06A4E,0x058D5,0x0495C,0x03DE3,0x02C6A,0x01EF1,0x00F78
};
public static int compute(byte[] data)
{
int newCrc = 0x0FFFF;
for (int i = 0; i < data.length; i++ )
{
int lookup = crcLookupTable[(newCrc ^ data[i]) & 0xFF];
newCrc = (newCrc >> 8) ^ lookup;
Page | 69
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
}
return(~newCrc);
}
}
Algorithm 6: “Perl” Table Implementation
This code was translated from the C version by one of our customers.
#!/usr/bin/perl
use strict;
my @CRC_LOOKUP =
(
0x00000,0x01189,0x02312,0x0329B,0x04624,0x057AD,0x06536,0x074BF,
0x08C48,0x09DC1,0x0AF5A,0x0BED3,0x0CA6C,0x0DBE5,0x0E97E,0x0F8F7,
0x01081,0x00108,0x03393,0x0221A,0x056A5,0x0472C,0x075B7,0x0643E,
0x09CC9,0x08D40,0x0BFDB,0x0AE52,0x0DAED,0x0CB64,0x0F9FF,0x0E876,
0x02102,0x0308B,0x00210,0x01399,0x06726,0x076AF,0x04434,0x055BD,
0x0AD4A,0x0BCC3,0x08E58,0x09FD1,0x0EB6E,0x0FAE7,0x0C87C,0x0D9F5,
0x03183,0x0200A,0x01291,0x00318,0x077A7,0x0662E,0x054B5,0x0453C,
0x0BDCB,0x0AC42,0x09ED9,0x08F50,0x0FBEF,0x0EA66,0x0D8FD,0x0C974,
0x04204,0x0538D,0x06116,0x0709F,0x00420,0x015A9,0x02732,0x036BB,
0x0CE4C,0x0DFC5,0x0ED5E,0x0FCD7,0x08868,0x099E1,0x0AB7A,0x0BAF3,
0x05285,0x0430C,0x07197,0x0601E,0x014A1,0x00528,0x037B3,0x0263A,
0x0DECD,0x0CF44,0x0FDDF,0x0EC56,0x098E9,0x08960,0x0BBFB,0x0AA72,
0x06306,0x0728F,0x04014,0x0519D,0x02522,0x034AB,0x00630,0x017B9,
0x0EF4E,0x0FEC7,0x0CC5C,0x0DDD5,0x0A96A,0x0B8E3,0x08A78,0x09BF1,
0x07387,0x0620E,0x05095,0x0411C,0x035A3,0x0242A,0x016B1,0x00738,
0x0FFCF,0x0EE46,0x0DCDD,0x0CD54,0x0B9EB,0x0A862,0x09AF9,0x08B70,
0x08408,0x09581,0x0A71A,0x0B693,0x0C22C,0x0D3A5,0x0E13E,0x0F0B7,
0x00840,0x019C9,0x02B52,0x03ADB,0x04E64,0x05FED,0x06D76,0x07CFF,
0x09489,0x08500,0x0B79B,0x0A612,0x0D2AD,0x0C324,0x0F1BF,0x0E036,
0x018C1,0x00948,0x03BD3,0x02A5A,0x05EE5,0x04F6C,0x07DF7,0x06C7E,
0x0A50A,0x0B483,0x08618,0x09791,0x0E32E,0x0F2A7,0x0C03C,0x0D1B5,
0x02942,0x038CB,0x00A50,0x01BD9,0x06F66,0x07EEF,0x04C74,0x05DFD,
0x0B58B,0x0A402,0x09699,0x08710,0x0F3AF,0x0E226,0x0D0BD,0x0C134,
0x039C3,0x0284A,0x01AD1,0x00B58,0x07FE7,0x06E6E,0x05CF5,0x04D7C,
0x0C60C,0x0D785,0x0E51E,0x0F497,0x08028,0x091A1,0x0A33A,0x0B2B3,
0x04A44,0x05BCD,0x06956,0x078DF,0x00C60,0x01DE9,0x02F72,0x03EFB,
0x0D68D,0x0C704,0x0F59F,0x0E416,0x090A9,0x08120,0x0B3BB,0x0A232,
0x05AC5,0x04B4C,0x079D7,0x0685E,0x01CE1,0x00D68,0x03FF3,0x02E7A,
0x0E70E,0x0F687,0x0C41C,0x0D595,0x0A12A,0x0B0A3,0x08238,0x093B1,
0x06B46,0x07ACF,0x04854,0x059DD,0x02D62,0x03CEB,0x00E70,0x01FF9,
0x0F78F,0x0E606,0x0D49D,0x0C514,0x0B1AB,0x0A022,0x092B9,0x08330,
0x07BC7,0x06A4E,0x058D5,0x0495C,0x03DE3,0x02C6A,0x01EF1,0x00F78);
#
our test packet read from an enter key press over the serial line:
#
#
#
type = 80
(key press)
(1 byte of data)
data_length = 1
data = 5
my $type = '80';
my $length = '01';
my $data = '05';
my $packet = chr(hex $type) .chr(hex $length) .chr(hex $data);
my $valid_crc = '5584' ;
print "A CRC of Packet ($packet) Should Equal($valid_crc)\n";
my $crc = 0xFFFF ;
printf("%x\n", $crc);
Page | 70
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
foreach my $char (split //, $packet)
{
# newCrc = (newCrc >> 8) ^ crcLookupTable[(newCrc ^ *bufptr++) & 0xff];
# & is bitwise AND
# ^ is bitwise XOR
# >> bitwise shift right
$crc = ($crc >> 8) ^ $CRC_LOOKUP[($crc ^ ord($char) ) & 0xFF] ;
# print out the running crc at each byte
printf("%x\n", $crc);
}
# get the complement
$crc = ~$crc ;
$crc = ($crc & 0xFFFF) ;
# print out the crc in hex
printf("%x\n", $crc);
Algorithm 7: For PIC18F8722 or PIC18F2685
This code was written by customer Virgil Stamps of ATOM Instrument Corporation for our CFA635
module.
; CRC Algorithm for CrystalFontz CFA635 display (DB535)
; This code written for PIC18F8722 or PIC18F2685
;
; Your main focus here should be the ComputeCRC2 and
; CRC16_ routines
;
;===================================================================
ComputeCRC2:
movlb
movwf
RAM8
dsplyLPCNT
;w has the byte count
;w
nxt1_dsply:
movf
POSTINC1
CRC16
call
decfsz
goto
dsplyLPCNT
nxt1_dsply
.0
movlw
;shift accumulator 16 more bits
;invert result
call
CRC16
movlw
.0
call
CRC16
comf
dsplyCRC,F
dsplyCRC+1,F
comf
return
;===================================================================
CRC16 movwf:
dsplyCRCData
movlw
;w has the byte crc
.8
movwf
dsplyCRCCount
_cloop:
bcf
rrcf
STATUS,C
dsplyCRCData,f
; clear carry for CRC register shift
; perform shift of data into CRC
; register
rrcf
rrcf
dsplyCRC,F
dsplyCRC+1,F
STATUS,C
notset
0x84
dsplyCRC,F
btfss
goto
; skip jump if carry
; otherwise goto next bit
; XOR poly mask with CRC register
_
movlw
xorwf
_notset:
decfsz
bra
return
dsplyCRCCount,F
; decrement bit counter
; loop if not complete
cloop
;===================================================================
; example to clear screen
Page | 71
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
dsplyFSR1_TEMP
equ
0x83A ;
; 16-bit save for FSR1 for display
; message handler
dsplyCRC
dsplyLPCNT
equ
equ
0x83C
0x83E
; 16-bit CRC (H/L)
; 8-bit save for display message
; length - CRC
dsplyCRCData
dsplyCRCCount
SendCount
equ
equ
equ
0x83F
0x840
0x841
; 8-bit CRC data for display use
; 8-bit CRC count for display use
; 8-bit byte count for sending to
; display
RXBUF2
TXBUF2
equ
equ
0x8C0
0x8E0
; 32-byte receive buffer for
; Display
; 32-byte transmit buffer for
; Display
;-------------------------------------------------------------------
ClearScreen:
movlb
movlw
movwf
movlw
movwf
movlw
movwf
call
RAM8
.0
SendCount
0xF3
dsplyCRC
0x21
; seed ho for CRC calculation
; seen lo for CRC calculation
dsplyCRC+1
ClaimFSR1
0x06
movlw
movwf
LFSR
TXBUF2
FSR1,TXBUF2
SendCount,w
TXBUF2+1
BMD1
movf
movwf
call
; message data length
goto
SendMsg
;===================================================================
; send message via interrupt routine. The code is made complex due
; to the limited FSR registers and extended memory space used
;
; example of sending a string to column 0, row 0
;-------------------------------------------------------------------
SignOnL1:
call
ClaimFSR1
lfsr
SHOW
movlw
addwf
movff
FSR1,TXBUF2+4
C0R0,BusName
.2
; set data string position
; move string to TXBUF2
;
;
SendCount
SendCount,TXBUF2+1
; insert message data length
call
BuildMsgDSPLY
SendMsg
call
return
;===================================================================
; BuildMsgDSPLY used to send a string to LCD
;-------------------------------------------------------------------
BuildMsgDSPLY:
movlw
movwf
movlw
movwf
LFSR
movlw
movwf
0xF3
dsplyCRC
0x21
; seed hi for CRC calculation
dsplyCRC+1
FSR1,TXBUF2
0x1F
; seed lo for CRC calculation
; point at transmit buffer
; command to send data to LCD
; insert command byte from us to
; CFA635
TXBUF2
BMD1
ddwf
call
movf
movwf
movf
movwf
movlw .2
SendCount,w
ComputeCRC2
dsplyCRC+1,w
POSTINC1
; + overhead
; compute CRC of transmit message
; append CRC byte
; append CRC byte
dsplyCRC,w
POSTINC1
Page | 72
Crystalfontz
www.crystalfontz.com
CFA633-YYH-KS LCD Module
Datasheet Release Date 2017-09-29
Hardware v2.1 / Firmware s2.2
return
;===================================================================
SendMsg:
call
ReleaseFSR1
LFSR
movff
movff
FSR0,TXBUF2
FSR0H,irptFSR0
FSR0L,irptFSR0+1
; save interrupt use of FSR0
movff
bsf
SendCount,TXBUSY2
PIE2,TX2IE
; set transmit interrupt enable
; (bit 4)
return
;===================================================================
; macro to move string to transmit buffer
SHOW macro
call
src, stringname
src
MOVLF
MOVLF
MOVLF
call
upper stringname, TBLPTRU
high stringname, TBLPTRH
low stringname, TBLPTRL
MOVE_STR
endm
;===================================================================
MOVE_STR:
tblrd
movf
bz
*+
TABLAT,w
ms1b
movwf
incf
goto
POSTINC1
SendCount
MOVE_STR
ms1b:
return
;===================================================================
Page | 73
相关型号:
SI9130DB
5- and 3.3-V Step-Down Synchronous ConvertersWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9135LG-T1
SMBus Multi-Output Power-Supply ControllerWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9135LG-T1-E3
SMBus Multi-Output Power-Supply ControllerWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9135_11
SMBus Multi-Output Power-Supply ControllerWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9136_11
Multi-Output Power-Supply ControllerWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9130CG-T1-E3
Pin-Programmable Dual Controller - Portable PCsWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9130LG-T1-E3
Pin-Programmable Dual Controller - Portable PCsWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9130_11
Pin-Programmable Dual Controller - Portable PCsWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9137
Multi-Output, Sequence Selectable Power-Supply Controller for Mobile ApplicationsWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
SI9137DB
Multi-Output, Sequence Selectable Power-Supply Controller for Mobile ApplicationsWarning: Undefined variable $rtag in /www/wwwroot/website_ic37/www.icpdf.com/pdf/pdf/index.php on line 202
-
VISHAY
©2020 ICPDF网 联系我们和版权申明