CFA631-TMF-KU photo

CFA631-TMF-KU

USB 20x2 LCD module, four button keypad, RoHS / REACH compliant, White Edge LED Backlight, STN Negative Blue, Transmissive, 0C to +50C, 12:00 viewing angle

CFA631 USB Family

  • The only 20x2 USB LCD with keypad designed to fit in a PC's 3.5" floppy disk drive bay.
  • USB interface (115200 baud throughput)
  • LED backlit negative mode STN 20x2 LCD
  • Integrated LED backlit 4-button translucent silicon keypad
  • "key legends" allows user assignment of soft keys to be shown easily on the LCD
  • LCD characters are contiguous in both X and Y directions to allow the host software to display "gapless" bar graphs in horizontal or vertical directions
  • Fully decoded keypad: any key combination is valid and unique
  • Robust packet-based communications protocol with 16-bit CRC
  • Built-in re-programmable microcontroller (factory operation)
  • Non-volatile memory capability ("EEPROM"):
    • Customize the "power-on" display settings
    • 16-byte "scratch" register for storing IP, netmask, system serial number
  • Available in a LCD drive bay kit
For reference only. For design purposes, please use the specifications in the datasheet.

Physical Characteristics

Characters x Lines 20 x 2
Module Overall
width height depth
millimeters 101.6 25.4 93.1
inches 4.00 1.00 3.66
PCB Outline
width height depth
millimeters 101.6 25.4 93.1
inches 4.00 1.00 3.66
Other Features Affecting Size
  • Keypad
Please see the datasheet
Viewing Area
width height
millimeters 66 13.8
inches 2.59 0.54
Active Area
width height
millimeters 63.55 10.35
inches 2.50 0.40
Character Size
width height
millimeters 2.6 4.5
inches 0.10 0.17
Character Pitch
width height
millimeters 3.18 5.2
inches 0.12 0.20
Dot Size
width height
millimeters 0.48 0.6
inches 0.01 0.02
Dot Pitch
width height
millimeters 0.53 0.65
Weight 80g
Keystroke Travel 2mm

Optical Characteristics

Display Technology LCD
Display Addressing passive
Glass Type/Glass Color STN/Blue
Polarizer Transmissive
View Direction 12
Backlight Color White
Backlight Type LED
Mode Negative
Foreground Color White
Background Color Blue

Environmental

Operating Temperatures
min max
Celsius 50°
Farenheit 32° 122°
Storage Temperatures
min max
Celsius -10° 60°
Farenheit 14° 140°
Humidity
min max
Non-condensing 0% 90%

Electronics

Controller CFA 631/635/735
Interface USB

Datasheets

CFA631_Data_Sheet_Release_2012-10-19.pdf (2MB, Oct 2012, Datasheet v.2012-10-19, Hardware v.2h4, Firmware v.u3v1)
Obsolete Datasheets
CFA631-TMF-KU_v2.0a.pdf (3MB, Mar 2010, Datasheet v.2.0a, Hardware v.2.0, Firmware v.2.0)
CFA_631_v2.0.pdf (1MB, Aug 2005, Datasheet v.2.0, Hardware v.2.0, Firmware v.2.0)
CFA_631_v1.0.pdf (654KB, Dec 2003, Datasheet v.1.0, Hardware v.1.0, Firmware v.1.0)

Other Files

Subscribe to Part Change Notices by email Email subscription for changes to CFA631-TMF-KU or RSS RSS feed for changes to CFA631-TMF-KU

Part Change Notice #10428

Products Affected: CFA631-RMF-KU1, CFA631-RMF-KU2, CFA631-RMF-KU, CFA631-TMF-KU1, DB631-ALRMF-KU1, DB631-ALRMF-KU2, DB631-ALRMF-KU3, DB631-ALTMF-KU1, DB631-ALTMF-KU2, DB631-ALTMF-KU3, DB631-BGRMF-KU1, DB631-BGRMF-KU2, DB631-BGRMF-KU3, DB631-BGTMF-KU1, DB631-BGTMF-KU2, DB631-BGTMF-KU3, DB631-BKRMF-KU2, DB631-BKRMF-KU3, DB631-BKRMF-KU1, DB631-BKTMF-KU2, DB631-BKTMF-KU3, CFA631-TMF-KU2, CFA631-TMF-KU, DB631-BKTMF-KU1, DB631-AKRMF-KU1, DB631-AKRMF-KU2, DB631-AKRMF-KU3, DB631-AKTMF-KU1, DB631-AKTMF-KU2, DB631-AKTMF-KU3
Date Issued: August 3, 2012
Summary: CFA631 family Firmware version 3v1
Last revision: v2.1
Description: The CFA631 family of modules is being revised to support a new LCD controller chip, the Rockworks RW1067. The changes to the CFA631 3v1 firmware are as follows.

For hardware changes, please see PCN #10427.

Updates:
Command 1 (0x01): Get Hardware & Firmware Version
Modules with the USB interface, -KU suffix, will report: CFA631:h2v4,u3v1

Command 12 (0x0C): Set LCD Cursor Style
Option 4 = inverting, blinking block is no longer supported. This option will result in a blinking underscore.

Command 22 (0x16): Send Command Directly to the LCD Controller
Any command sent specifically to the Samsung S6A0073 will need to be reviewed / modified for the commands / registers of the Rockworks RW1067. Please contact the Crystalfontz Engineering Support Team atsupport@crystalfontz.comfor the RW1067 datasheet.

Enhancements:
Command 28 (0x1C): Set ATX Power Switch Functionality
Added auto polarity switch.
Improved pulse length functionality.
Added feature to hold until system off during power down.

Fixes:
Updates to timings and sequence of Serial interface power up to prevent possible corruption of data displayed
Reason: The Samsung S6A0073 LCD controller used was scheduled as End of Life. This EOL affected a number of intelligent modules from Crystalfontz America, Inc. The replacement RW1067 LCD controller was developed as a replacement for the Samsung S6A0073 LCD controller for Crystalfontz America, Inc by Rockworks (China).
Impact: This announcement impacts all variants, interfaces, and part numbers that currently use the CFA631 family of modules. The CFA631 can continue to be used in current and future designs.
Recommendation: Continue to order and build with the CFA631 as required by production schedules. Transition to the CFA631 h2v4 hardware and supporting firmware should be a seamless process. Engineering samples for qualification for the revised CFA631 are scheduled to be available Q3 of 2012.

Please contact our logistics team for engineering samples sales@crystalfontz.com.

For engineering and support questions, please contact our engineering support team at support@crystalfontz.com
Availability: Q3 2012
Review / Update customer Defined Part custom firmware

Q3 2012
New hardware and supporting firmware available for engineering samples

Estimated - Begin transition to h2v4 hardware as v2.1 hardware inventory is depleted

NOTE: We will not ship production orders of 3v0 hardware until the v2.1 inventory is depleted

Q4 2012
Estimated - CFA631 v2.1 hardware to be exhausted, transition to CFA631 h2v4 hardware / u3v1 firmware complete.
Price Change: 2012-08-03
No scheduled price change at this time.

Part Change Notice #10427

Products Affected: CFA631-RMF-KU1, CFA631-RMF-KU2, CFA631-RMF-KU, CFA631-TMF-KU1, DB631-ALRMF-KU1, DB631-ALRMF-KU2, DB631-ALRMF-KU3, DB631-ALTMF-KU1, DB631-ALTMF-KU2, DB631-ALTMF-KU3, DB631-BGRMF-KU1, DB631-BGRMF-KU2, DB631-BGRMF-KU3, DB631-BGTMF-KU1, DB631-BGTMF-KU2, DB631-BGTMF-KU3, DB631-BKRMF-KU2, DB631-BKRMF-KU3, DB631-BKRMF-KU1, DB631-BKTMF-KU2, DB631-BKTMF-KU3, CFA631-TMF-KU2, CFA631-TMF-KU, DB631-BKTMF-KU1, DB631-AKRMF-KU1, DB631-AKRMF-KU2, DB631-AKRMF-KU3, DB631-AKTMF-KU1, DB631-AKTMF-KU2, DB631-AKTMF-KU3
Date Issued: August 3, 2012
Summary: CFA631 family Hardware version 2v4
Last revision: v2.1
Description: The CFA631 family of modules is being revised to support a new LCD controller chip, the Rockworks RW1067. The changes to the CFA631 2v4 hardware are as follows:

1. LCD controller changing from Samsung S6A0073 to Rockworks RW1067

2. Supporting driving circuitry between the LCD controller and the LCD glass has been updated to support the Rockworks RW1067

3. The PCB layout has been updated to support the Rockworks RW1067

4. Firmware updates to support the Rockworks RW1067 and functional improvements PCN #10428

The only changes to the CFA631 family are to support the Rockworks RW1067 controller.
There are no other physical changes to the CFA631.
Reason: The Samsung S6A0073 LCD controller used was scheduled as End of Life. This EOL affected a number of intelligent modules from Crystalfontz America, Inc. The replacement RW1067 LCD controller was developed as a replacement for the Samsung S6A0073 LCD controller for Crystalfontz America, Inc by Rockworks (China).
Impact: This announcement impacts all variants, interfaces, and part numbers that currently use the CFA631 family of modules. The CFA631 can continue to be used in current and future designs.
Recommendation: Continue to order and build with the CFA631 as required by production schedules. Transition to the CFA631 h2v4 hardware and supporting firmware should be a seamless process. Engineering samples for qualification for the revised CFA631 are scheduled to be available Q3 of 2012.

Please contact our logistics team for engineering samples sales@crystalfontz.com.

For engineering and support questions, please contact our engineering support team at support@crystalfontz.com
Availability: Q3 2012
Review / Update customer Defined Part custom firmware

Q3 2012
New hardware and supporting firmware available for engineering samples.

Estimated - Begin transition to h2v4 hardware as v2.1 hardware inventory is depleted

NOTE: We will not ship production orders of 3v0 hardware until the v2.1 inventory is depleted

Q4 2012
Estimated - CFA631 v2.1 hardware to be exhausted, transition to CFA631 h2v4v0 hardware / u3v1 firmware complete
Price Change: 2012-08-03
No scheduled price change at this time.

For reference only. For design purposes, please use the specifications in the datasheet.
add a note add a note

User Contributed Notes for CFA631-TMF-KU

allen at crystalfontz the com Aug 23, 2012 11:36AM
Java on Windows for changing text commands to CRC16 data packets understandable by CFA631, CFA533/CFA633, CFA635, and CFA735 LCDspublic 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)));

        // 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;
        }
        return(~newCrc);
    }
}
  
allen at crystalfontz the com Aug 23, 2012 11:10AM
This is C# (C sharp) used to control CFA633, CFA635, CFA631 USB LCDs and keypad buttons. It's bare-bones. Does not monitor return packets or SCAB/Keypad reports. 

The first thing to improve would be to open the serial port in a class constructor or open method, then close it in a destructor or a close method so that ports aren't continually opening and closing for each packet, as they are in this example code.
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Text;
namespace ConsoleApplication1
{
    publicclassLCD
    {
        public SerialPort Port = newSerialPort("COM3", 115200, Parity.None, 8, StopBits.One);
        public struct PACKET_STRUCT
        {
            public Byte command, data_length;
            public Byte[] data;
            public uint crc;
            public PACKET_STRUCT(Byte[] byteArray, Byte c, Byte length)
            {
                command = c;
                data_length = length;
                data = byteArray;
                crc = uint.MinValue;
            }
        }

        private static uint[] 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 uint CalculateCRC(byte[] data, int offset, int length)
        {
            uint newCrc = 0x0FFFF;
            for (int i = offset; i < length; i++)
            {
                uint lookup = crcLookupTable[(newCrc ^ data[i]) & 0xFF];
                newCrc = (newCrc >> 8) ^ lookup;
            }
            return (~newCrc);
        }

        public void Send_Packet(ref PACKET_STRUCT packet)
        {
            byte[] linear_array = new byte[26];
            byte[] crc_bytes;
    
            linear_array[0] = packet.command;
            linear_array[1] = packet.data_length;

            if(packet.data_length > 0)
            {
                Array.Copy(packet.data, 0, linear_array, 2, packet.data_length);
            }

            packet.crc = CalculateCRC(linear_array, 0, packet.data_length + 2);
    
            crc_bytes = BitConverter.GetBytes((ushort)packet.crc);
            Array.Copy(crc_bytes, 0, linear_array, packet.data_length + 2, 2);
 
            Port.Open();
            Port.Write(linear_array, 0, packet.data_length + 4);
            Port.Close();
        }

        public LCD()
        {
            PACKET_STRUCT outgoing = new PACKET_STRUCT();
            outgoing.command = 0x06;
            outgoing.data_length = 0;
            outgoing.data = null;
            Send_Packet(ref outgoing);
        }
    }
}

Then you run this to actually make an object out of the aboveusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        staticvoid Main(string[] args)
        {
            LCD LCD = new LCD(); 
        }
    }
}

Quantity:
Prices without customizations:
Ship Qty Price
1 $60.82
10 $56.72
20 $52.72
50 * $48.62
100 * $44.52
200 * $40.52
500 * $36.42
1000 * $32.32
* These quantities may have up to 90 days lead time.

More Like This One