Skip to main content
Sandeep Dhokne
Associate III
July 14, 2017
Solved

HAL I2C Communication Problem

  • July 14, 2017
  • 2 replies
  • 788 views
Posted on July 14, 2017 at 11:52

Dear Sir/Madam,

I am working on STM32F405 mcu.

I developed my code on cubemx and HAL drivers.

I want to interface microchip adc 'MCP3428' via HAL I2C drivers but unfortunately i was failed.

Anybody of you please help me to resolved this issue.

Thank you.

    This topic has been closed for replies.
    Best answer by john doe
    Posted on July 14, 2017 at 19:45

            status = HAL_I2C_Mem_Write(&hi2c1,                        // i2c handle

                                  (uint16_t)(dev_addr<<1),        // i2c address, left aligned

                                  (uint8_t)reg_addr,            // register address

                                  I2C_MEMADD_SIZE_8BIT,            //  8bit register addresses

                                  (uint8_t*)(&reg_data),        // write returned data to variable named reg_data

                                  cnt,                            // write how many bytes

                                  100);                            // timeout

    you'll have to read your data sheet for addresses and sizes, but the above code is how to read a register

    2 replies

    john doe
    john doeBest answer
    Senior III
    July 14, 2017
    Posted on July 14, 2017 at 19:45

            status = HAL_I2C_Mem_Write(&hi2c1,                        // i2c handle

                                  (uint16_t)(dev_addr<<1),        // i2c address, left aligned

                                  (uint8_t)reg_addr,            // register address

                                  I2C_MEMADD_SIZE_8BIT,            //  8bit register addresses

                                  (uint8_t*)(&reg_data),        // write returned data to variable named reg_data

                                  cnt,                            // write how many bytes

                                  100);                            // timeout

    you'll have to read your data sheet for addresses and sizes, but the above code is how to read a register

    Sandeep Dhokne
    Associate III
    July 17, 2017
    Posted on July 17, 2017 at 11:39

    Thank you so much.

    My problem is solved.