CN0428 default firmware communication protocol

Hello,

We have 4x EVAL-CN0428-EBZ with EVAL-ADuCM355-ARDZ-INT and going to use it in our already working prototype. It is on ST32F429 MCU and we are going to  communicate with CN0428 by i2c. Where we can find a description of default firmware communication protocol and other features? Best regards, Alex.

Parents
  • +1
    •  Analog Employees 
    on Oct 7, 2019 2:10 PM

    Hi Alex,

    Most of the information is on the wiki: https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0428 
    We still have some documentation work to do here to make it easier to use a different I2C master code than the example project. But I think the best way would be to leverage the code from the example project that uses ADICUP3029 as the I2C master and follow the way it initializes the CN0428 boards and reads from and writes to them. Here is the github link (same as the link on the wiki): https://github.com/analogdevicesinc/EVAL-ADICUP3029/tree/master/projects/ADuCM3029_demo_cn0428_cn0429

    To add some more context, ASCII commands are interpreted on the CN0428 board directly (this was done mostly to allow compatibility with the UART mode). In our example project, the ADICUP3029 waits for a command to be sent to the serial port, relays that command over I2C to the CN0428 board, and prints the response. The slave stores its response in a buffer until the master reads its contents.

    Here is a simplified flow-chart of the example project (ignoring CN0429 compatibility stuff, input validation, timeouts, etc):

     ADICUP3029 Example Project Block Diagram

    Two commands were added to accommodate I2C:
    0x61 (BYTES_TO_READ): read back 1 byte representing how many bytes are ready to be read out of slave (0-255, though there can be more than 255 bytes on the slave)
    0x80 (SET_I2C_ADDRESS): argument: addr (new 7-bit address). If slave select GPIO (P0.3 on slave) is low, I2C address is updated to addr, otherwise no effect. Note that in this structure, it's up to the master to make sure there are no conflicts.

    ASCII commands that can be sent to the slave are as shown on the wiki (scroll down a bit to where it shows available commands): https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0428#setting_up_the_serial_terminal_software_to_communicate_with_the_boards

    I hope this helps give you a decent starting point. Let me know if I can answer any questions you may have.
    Thanks,
    Scott

Reply
  • +1
    •  Analog Employees 
    on Oct 7, 2019 2:10 PM

    Hi Alex,

    Most of the information is on the wiki: https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0428 
    We still have some documentation work to do here to make it easier to use a different I2C master code than the example project. But I think the best way would be to leverage the code from the example project that uses ADICUP3029 as the I2C master and follow the way it initializes the CN0428 boards and reads from and writes to them. Here is the github link (same as the link on the wiki): https://github.com/analogdevicesinc/EVAL-ADICUP3029/tree/master/projects/ADuCM3029_demo_cn0428_cn0429

    To add some more context, ASCII commands are interpreted on the CN0428 board directly (this was done mostly to allow compatibility with the UART mode). In our example project, the ADICUP3029 waits for a command to be sent to the serial port, relays that command over I2C to the CN0428 board, and prints the response. The slave stores its response in a buffer until the master reads its contents.

    Here is a simplified flow-chart of the example project (ignoring CN0429 compatibility stuff, input validation, timeouts, etc):

     ADICUP3029 Example Project Block Diagram

    Two commands were added to accommodate I2C:
    0x61 (BYTES_TO_READ): read back 1 byte representing how many bytes are ready to be read out of slave (0-255, though there can be more than 255 bytes on the slave)
    0x80 (SET_I2C_ADDRESS): argument: addr (new 7-bit address). If slave select GPIO (P0.3 on slave) is low, I2C address is updated to addr, otherwise no effect. Note that in this structure, it's up to the master to make sure there are no conflicts.

    ASCII commands that can be sent to the slave are as shown on the wiki (scroll down a bit to where it shows available commands): https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0428#setting_up_the_serial_terminal_software_to_communicate_with_the_boards

    I hope this helps give you a decent starting point. Let me know if I can answer any questions you may have.
    Thanks,
    Scott

Children
No Data