Datasheet

TMC2209 DATASHEET (Rev. 1.03 / 2019-JUN-26) 17
www.trinamic.com
4.2 CRC Calculation
An 8 bit CRC polynomial is used for checking both read and write access. It allows detection of up to
eight single bit errors. The CRC8-ATM polynomial with an initial value of zero is applied LSB to MSB,
including the sync- and addressing byte. The sync nibble is assumed to always be correct. The
TMC2209 responds only to correctly transmitted datagrams containing its own slave address. It
increases its datagram counter for each correctly received write access datagram.

SERIAL CALCULATION EXAMPLE
CRC = (CRC << 1) OR (CRC.7 XOR CRC.1 XOR CRC.0 XOR [new incoming bit])
C-CODE EXAMPLE FOR CRC CALCULATION
void swuart_calcCRC(UCHAR* datagram, UCHAR datagramLength)
{
int i,j;
UCHAR* crc = datagram + (datagramLength-1); // CRC located in last byte of message
UCHAR currentByte;
*crc = 0;
for (i=0; i<(datagramLength-1); i++) { // Execute for all bytes of a message
currentByte = datagram[i]; // Retrieve a byte to be sent from Array
for (j=0; j<8; j++) {
if ((*crc >> 7) ^ (currentByte&0x01)) // update CRC based result of XOR operation
{
*crc = (*crc << 1) ^ 0x07;
}
else
{
*crc = (*crc << 1);
}
currentByte = currentByte >> 1;
} // for CRC bit
} // for message byte
}
4.3 UART Signals
The UART interface on the TMC2209 uses a single bi-direction pin:
UART INTERFACE SIGNAL
PDN_UART
Non-inverted data input and output. I/O with Schmitt Trigger and VCC_IO level.
MS1_ADDR0
IC UART address bit 0 (LSB)
MS2_ADDR1
IC UART address bit 1
The IC checks PDN_UART for correctly received datagrams with its own address continuously. It adapts
to the baud rate based on the sync nibble, as described before. In case of a read access, it switches
on its output drivers and sends its response using the same baud rate. The output becomes switched
off four bit times after transfer of the last stop bit.
Master CPU
(µC with UART)
TMC22xx
different address
(R/W access)
PDN_UART
TXD
RXD
1k
Master CPU
(µC with UART)
TMC22xx #1
same address
(write only access)
PDN_UART
TXD
TMC22xx #2
same address
(write only access)
PDN_UART
TMC22xx
different address
(R/W access)
PDN_UART
MS2_AD1
MS1_AD0
MS2_AD1
MS1_AD0
+V
CCIO
Figure 4.1 Attaching the TMC2209 to a microcontroller UART