1.打开官方例程
2.修改引脚配置
3.时钟可按照实际情况修改,也可不用更改,本例时钟不做更改
4.配置LPI2C模块
设置从机地址:从机地址如下图所示,低三位表示为AT24C16的块地址,AT24C16将2KB的内存空间分为8个块,每个块256个字节的数据,此处先读写块0的内存,故将地址设置为0x50。
I2C频率设置:此处使用标准模式速率为100KHz。按照AT24C16手册,也可配置为快速模式400KHz或1MHz,可按照需求配置。
5.按页写入数据到AT24C16
按照时序,先发送器件地址——发送待写入区域地址——连续写入数据——停止写入。注意:单次最多写入16字节的数据
6.从AT24C16随机读取数据
按照时序,先发送器件地址——发送待读区域地址——连续读入数据——停止写入
7.奉上代码:
uint8_t txbuff[] = {0x00, 0x01, 0x02}; /* 0x00:块1的偏移地址为0 后两个才为写入数据 */
uint8_t rx_buff[2] = {0, 0};
LPI2C_DRV_MasterInit(INST_LPI2C1, &lpi2c1_MasterConfig0, &lpi2c1MasterState);
/* Send a packet of data to the bus slave */
LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, txbuff, 3, false, OSIF_WAIT_FOREVER); /* 写入数据 */
delay_ms(5); /* 等待完全写入数据 */
LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, txbuff, 1, true, OSIF_WAIT_FOREVER); /* 写入待读取数据地址 */
LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C1, rx_buff, 2, true, OSIF_WAIT_FOREVER); /* 读取数据 */
经过测试,以上代码能够实现读写功能,各路朋友可放心使用