Expand description
This crate provides interface to work with Titanmec LED drives for 7 segment displays. Titanmec produce different types of MCUs that are using common 2 pin or 3 pin serial like interfaces. The most popular models for DIY projects are TM1637 and TM1638. Besides display driver capabilities this MCUs are also provide key-scan functionality.
This driver utilize embedded_hal functionality, thus it could work on different kind of hardware via HAL.
§This is low level API
Read data sheet first if you want to understand how to work with MCU. API provided here only wraps data transfer protocols. You still have to send and receive raw data as bytes. In order to understand meaning of this bytes you should have some knowledges.
§Need code examples?
Just explore repository examples folder.
I just have no capacity to maintain actual code samples in every place.
§Features
Some functionality of this library are splitted into features. I hope that it may help to reduce resulted firmware size.
- cldkio - functions to work with 2 wire interfaces
- clkdiostb - functions to work with 3 wire interfaces
- keys - key scan support
- fx - tiny effects api (depends on “galloc”)
- galloc - functionality that require to have global allocator in your application
You should look into Cargo.toml in source code to get better understanding how does this features combined together.
§Handling delays
I’ve found out that handling delays is a very tricky for some hardware. Plus HAL implementation gives DelayXX and Timer traits thus it is not obvious what kind of trait should be preferred.
In order to simplify delay approach I decided that you have to implement delay logic on your side and wrap it in lambda. It is up to you what kind of delay approach you will use. Just keep in mind that delays have to be precise.
Some functions accepts delay value as input parameter. It is kinda weird, but it would allow you to reduce bus communication delays if your circuit configuration allows you to. In other cases you can use pre defined delay values.
Modules§
- utils
- Helpful functions to work with MCUs raw data.
Enums§
- TmError
- Describes possible error mostly related to low level interaction with MCU. At least it should give you an insight about what goes wrong.
Constants§
- BUS_
DELAY_ US - Universal delay for TM serial protocol. This value should fit all configurations, but you should prefer to use values that fits exact MCU chip version.
- CHAR_0
- CHAR_1
- CHAR_2
- CHAR_3
- CHAR_4
- CHAR_5
- CHAR_6
- CHAR_7
- CHAR_8
- CHAR_9
- CHAR_A
- CHAR_
BRACKET_ LEFT - CHAR_
BRACKET_ RIGHT - CHAR_C
- CHAR_
CYR_ B - CHAR_
CYR_ E - CHAR_
DEGREE - CHAR_E
- CHAR_F
- CHAR_G
- CHAR_H
- CHAR_I
- CHAR_J
- CHAR_L
- CHAR_
MINUS - CHAR_N
- CHAR_O
- CHAR_P
- CHAR_R
- CHAR_S
- CHAR_U
- CHAR_
UNDERSCORE - CHAR_a
- CHAR_b
- CHAR_c
- CHAR_d
- CHAR_e
- CHAR_h
- CHAR_i
- CHAR_l
- CHAR_n
- CHAR_o
- CHAR_q
- CHAR_r
- CHAR_t
- CHAR_u
- CHAR_y
- COM_
ADDRESS - Address instruction set
- COM_
DATA - Data control instruction set
- COM_
DATA_ ADDRESS_ ADD - Address adding mode (write to display)
- COM_
DATA_ ADDRESS_ FIXED - Data fix address mode (write to display)
- COM_
DATA_ READ - Read key scan data
- COM_
DISPLAY - Display control instruction set
- COM_
DISPLAY_ OFF - COM_
DISPLAY_ ON - Display ON max brightness. Can be combined with masked bytes to adjust brightness level
- DIGITS
- List of digit characters where values correlates with array index 0-9.
- DISPLAY_
BRIGHTNESS_ MASK - Display brightness mask
- SEG_1
- Segment A - top
- SEG_2
- Segment B - top right
- SEG_3
- Segment C - bottom right
- SEG_4
- Segment D - bottom
- SEG_5
- Segment E - bottom left
- SEG_6
- Segment F - top left
- SEG_7
- Segment G - middle
- SEG_8
- Segment DP (eight) - dot or colon
- SEG_9
- Used with 3 wire interface for second byte
- SEG_10
- Used with 3 wire interface for second byte
- SEG_11
- Used with 3 wire interface for second byte
- SEG_12
- Used with 3 wire interface for second byte
- TM1637_
BUS_ DELAY_ US - Proven working delay for TM1637, it can be lower depending of your pull-up resistor characteristics.
- TM1637_
MAX_ SEGMENTS - Maximum number of display segments supported by this MCU.
- TM1637_
RESPONSE_ SIZE - Number of bytes that can be read from from TM1637 response.
- TM1638_
BUS_ DELAY_ US - Proven working delay for TM1638
- TM1638_
MAX_ SEGMENTS - Maximum number of display segments supported by this MCU.
- TM1638_
RESPONSE_ SIZE - Number of bytes that can be read from from TM1638 response.
Functions§
- tm_
send_ bytes_ 2wire - Send one or several bytes to MCU via 2 wire interface (DIO,CLK).
- tm_
send_ bytes_ 3wire - Send bytes using 3 wire interface (DIO,CLK,STB).