.. _i2c_master_mem-index: i2c_master_mem ================== 总览 ---------------- 本示例主要介绍使用i2c作为master模式读写EEPROM的使用方法。(注意使用的EEPROM型号,demo中的 ``CK_IIC_SLAVE_ADDR`` 宏需要根据实际使用的EEPROM设置) 准备及使用步骤 ---------------- - 使用步骤: - 将板子与电脑用USB电源线连接,USB电源线默认连接UART0; - 将板子和EEPROM连接,其中板子的gpio4连接EEPROM的scl引脚,gpio3连接EEPROM的sda引脚,VCC和GND也对应连接; - 编译 ``customer_app/periperal/demo_i2c`` 工程并下载工程,编译命令: ``genromap ``,可选择 ``BL602`` , ``BL702``;; - 打开一个串口终端窗口(波特率为2000000,用于接收和发送uart消息); - 串口终端输入 ``demo_hosal_i2c_mater_mem`` ,表示启动 ``i2c_master_mem`` 的demo; - 此时会打印读写的数据,如果读和写的数据一致,表示该demo成功运行。 .. figure:: imgs/image1.png :alt: 应用实例 ---------------- - 通过 ``hosal_i2c_init`` 初始化i2c主设备。 :: hosal_i2c_dev_t i2c0; ret = hosal_i2c_init(&i2c0); if (ret != 0) { hosal_i2c_finalize(&i2c0); blog_error("hosal i2c init failed!\r\n"); return; } - 通过 ``hosal_i2c_mem_write`` 接口对i2c从设备写数据。 :: ret = hosal_i2c_mem_write(&i2c0, CK_IIC_SLAVE_ADDR, EEPROM_PAGE_ADDR, HOSAL_I2C_MEM_ADDR_SIZE_16BIT, i2c_data_txbuf, 32, 1000); vTaskDelay(500); if (ret != 0) { hosal_i2c_finalize(&i2c0); blog_error("hosal i2c write failed!\r\n"); return; } - 通过 ``hosal_i2c_mem_read`` 接口从i2c从设备读数据。 :: ret = hosal_i2c_mem_read(&i2c0, CK_IIC_SLAVE_ADDR, EEPROM_PAGE_ADDR, HOSAL_I2C_MEM_ADDR_SIZE_16BIT, i2c_data_rxbuf, 32, 3000); if (ret != 0) { hosal_i2c_finalize(&i2c0); blog_error("hosal i2c read failed!\r\n"); return; } - 通过 ``hosal_i2c_finalize`` 接口关闭i2c主设备。 :: ret = hosal_i2c_finalize(&i2c0); if (ret != 0) { blog_error("hosal i2c finalize failed!\r\n"); return; }