完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
根据AT24XXX的芯片手册,传输的设备地址的第八位应该是读写标志位,韦老师在第一节课中说第八位0表示写,1表示读。那按理说在箭头所指的地方应该是0xa1啊,为什么不是这样子,程序还是可以读出数据来呢? |
|
相关推荐
2个回答
|
|
注意看 i2c_read 和 i2c_write 函数的实现,这里边才真正处理读写的问题
void i2c_write(unsigned int slvAddr, unsigned char *buf, int len) { g_tS3C24xx_I2C.Mode = WRDATA; // 写操作 g_tS3C24xx_I2C.Pt = 0; // 索引值初始为0 g_tS3C24xx_I2C.pData = buf; // 保存缓冲区地址 g_tS3C24xx_I2C.DataCount = len; // 传输长度 IICDS = slvAddr; IICSTAT = 0xf0; // 主机发送,启动 /* 等待直至数据传输完毕 */ while (g_tS3C24xx_I2C.DataCount != -1); } void i2c_read(unsigned int slvAddr, unsigned char *buf, int len) { g_tS3C24xx_I2C.Mode = RDDATA; // 读操作 g_tS3C24xx_I2C.Pt = -1; // 索引值初始化为-1,表示第1个中断时不接收数据(地址中断) g_tS3C24xx_I2C.pData = buf; // 保存缓冲区地址 g_tS3C24xx_I2C.DataCount = len; // 传输长度 IICDS = slvAddr; IICSTAT = 0xb0; // 主机接收,启动 /* 等待直至数据传输完毕 */ while (g_tS3C24xx_I2C.DataCount != 0); } |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2071 浏览 6 评论
1881 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4435 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-12 16:25 , Processed in 0.652039 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191