PIC16 UART to Analog Devices MAX96706 GMSL Chip (SerDes) - comms issues - Page 1
Forum section: electronics / general

author: tbw2
author_rank: Contributor
timestamp: July 24, 2023, 01:52:30 pm
content: Trying to set up a pair of SerDes chips, specifically the Analog Devices MAX96705 and MAX96706 GMSL IC's.MAX96706https://www.analog.com/en/products/max96706.htmlHitting a brick wall with the comms. No response from the MAX96706 (Deserializer) via UART.PIC is sending the following packet to the RX pin of the MAX96706;0x79 // Sync Bit0x91 // Device Address + Read Bit (address is0x1E // Device ID register0x01 // 1 Byte of data expected to be returned (specifically we should receive 01001010).Baud rate selected is 115200.Nothing is received back from the Deserializer (checked on scope).Things tried:-Ensuring PWDNB is pulled HI, enabling normal operation.-Holding MS/HVEN down LO, setting Base Mode-Checking Power Supplies are correct and working, 3v3, 1v8 Analog and 1v8 Digital.-Tried swapping TX/RX-Lower baud rate (9600)-Removing Sync Byte (0x79)-Changing Device address to 0x90, to write to IC.-Device address is set by external pins ADD0-ADD3, all of which are internally pulled low, checked with DMM.Have I interpreted the UART Frame correctly? (Fig21)?(0x79) (0x91) (0x1E) (0x01) ........... Then listen for the ACK, right?

author: DavidAlfa
author_rank: Super Contributor
timestamp: July 25, 2023, 09:08:22 pm
content: What about I2CSEL pin?QuoteQuoteFinally ensure the packed is made correctly:Quote

author: tbw2
author_rank: Contributor
timestamp: July 25, 2023, 09:15:44 pm
content: Thank you for the reply. The I2CSEL pin is pulled low internally, so should boot up in UART mode. Externally, it is connected to an LED (unlit).Today I reflowed the IC, tried various other baud settings but still no responses.I believe the chip is OK because the LOCK pin changes state after startup, alerting me that the GMSL link is not locked on.Tomorrow i will try i2c communication. Implementing the MSSP module from MCC looks to be a non-starter as there is no provision for the Sync byte, so i will have to make my own driver… Not fun!Edit:The quote regarding UART packets - does that mean each byte I send needs an extra 3 bits adding?I can’t just send the Sync byte, it needs the start, stop and parity bits adding? To make it 11bits?Edit2:I will try the following tomorrow;[0b0 + 0x79 + 0b1 + 0b1] = Start + SYNC + Odd Parity + Stop[0b0 + 0x91 + 0b1 + 0b1] = Start + Device Address + Odd Parity + Stop[0b0 + 0x1E + 0b0 + 0b1] = Start + Device ID Register + Even Parity + Stop[0b0 + 0x01 + 0b1 + 0b1] = Start + Register Width + Odd Parity + StopThank you @DavidAlfa you have been a big help.

author: DavidAlfa
author_rank: Super Contributor
timestamp: July 25, 2023, 10:24:46 pm
content: To my undertanding, yes! Though I've never used that device.Check the software development kit, will probably be useful!https://www.analog.com/en/design-center/evaluation-hardware-and-software/software/software-download.html?swpart=SFW0000780E

author: mikerj
author_rank: Super Contributor
timestamp: July 25, 2023, 10:38:50 pm
content: Quote from: tbw2 on July 25, 2023, 09:15:44 pmThe start, stop and parity bits are automatically added by the UART peripheral if you are using one (and configure it correctly). If you are bit banging it then you'll need to do this manually.

author: tbw2
author_rank: Contributor
timestamp: July 26, 2023, 11:28:38 am
content: Success! Upon investigation of the outgoing data, it was found that the parity bit was not being added into the frame by the EUSART peripheral.Turns out the PIC16F1615 does not support parity in the hardware, but I was able to modify the EUSART_Write function to include it, using the TX1STA register (TX9D bit).Thank you all for your input.