S32K144:12.LPI2C驱动AT24C16

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); /* 读取数据 */

经过测试,以上代码能够实现读写功能,各路朋友可放心使用

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值