General Gravity

DFR0645-G 4-Digit LED 7-Segment display Wiki page errors

userHead Carl.Williams 2023-02-22 23:05:16 402 Views1 Replies

When trying to get these 4-digit 7-segment displays working on a Micro:bit I had to find the original datasheet for the TM1650 chip and work from that. There are quite a few errors on the DFRobot Wiki page entry for these devices - the most immediately obvious is that the connection table lists “GND” as “Positive” and “VCC” as “Negative” (and SCL as “Control line” rather than “clock line”) but the real issue is that the TM1650 isn't really an I2C device, as far as I can tell, except in a rather loose and incompatible sense. 

 

These TM1650 based 4-digit displays don't have a device ID, they respond with an ACK to any 8 bits clocked in after a START sequence, which means if they are attached to the regular I2C pins on a Micro:bit, the micro:bit hangs during start-up as it tries to initialise other I2C devices on the bus. 

 

Moreover, the bit order is opposite to that shown on the Wiki page, the protocol is different, and the sample code is for the 8-digit 7-segment LED module (which apparently really is I2C, with a device ID and so on). 

 

TM1650 needs the most significant bit first, and the ACK occurs in a ninth clock, each communication should be two bytes - i.e. starting with SCL and SDA both HIGH:

 

set START condition by taking SDA LOW;take SCL LOW;set SDA according bit 7 of byte 1;take SCL high then low;set SDA to  bit 6 of byte;output another clock pulse and repeat until all 8 bits are sent;send a ninth clock pulse, optionally reading back the ACK from the display;clock out the bits of byte 2 in the same MSB-first order;send a final clock pulse for the byte2 ACK;take SCL back to HIGH;with SCL HIGH, take SDA back to HIGH - the STOP condition. 

 

Each pair of bytes is in effect a single command or a single register/data pair.

 

For display, it's either 0x48 followed by a byte for display on/off/brightness command(s), or one of 0x68, 0x6A, 0x6C, 0x6E - an address for one of the four digit positions, left to right - followed by a byte representing segment states to set in that digit - bits 0-6 are for segments A-G and bit 7 is for decimal point.

 

I've created an extension for micro:bit to drive this display, I'm not sure if I'm allowed to link to that on this forum though? 

2023-02-23 11:16:08

Hi

Thank you very much for your information!

We do find the error you described (“GND” as “Positive” and “VCC” as “Negative”), the English ver of WIKI didn't update, the chinese version has fixed this error.

In mind+, I can use Gravity: 4-Digital LED Segment Display Module (Green)(SKU:DFR0645-G) without any problem. But I do can not get it work by the library provided by WIKI. I have report this issue to product manager and will fix it in the future.

You are welcome to attach your link of extension, thank you very much for your support.

 

userHeadPic NeloKin