电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【正点原子阿波罗STM32F429IGT开发板试用体验】+硬件IIC读写....
【正点原子阿波罗STM32F429IGT开发板试用体验】+硬件IIC读写....
nealson
LV5工程师
| 2018-07-04 16:15:56
浏览量 1214
回复:0
发表新帖
本帖最后由 nealson 于 2018-7-4 16:31 编辑
硬件IIC读写测试利用的是板载AT24C02和PCF8574芯片,为什么用这两个呢?因为前者是双地址读写,后者是单地址读写,需要调用的函数不一样,当然可以一样,但是会有问题。
1.首先看一下数据手册,了解两个芯片的读写时序 先看下AT24C02的读写时序
可以看到读写时序是先传输设备地址,在传输数据地址,在传输数据(读写的区别在于设备地址的最低位,高为读,低为写)
再看下PCF8574T的读写时序
可以看到时序是先传输设备地址,然后直接传输数据(读写的区别在于设备地址的最低位,高为读,低为写)
2.初始化IIC设备,这里设置I2C的速度是标准的100000,没有使用快速的400K,可以兼容更多的设备。
HAL库关于IIC读写的几个函数
AT24C02调用的函数,这里要强调一点,AT24C02是分页写入的,每页8个字节,原子哥例程写入数据串是一个一个写入,如果需要连续写入数据可以一个一个写,连续写的时候注意页地址区分,否则会造成读写异常。这里我做了分页处理,可以参考下。
PCF8574T调用的函数
3.实现代码,如图是AT24C02的代码,屏蔽的是PCF8574的代码
4.运行AT24C02代码的结果
以下是需要写入的数据
初始化之后先读一包数据,看到和写入数据不一样,确保不作假
短暂延时之后写入数据,然后重新读,看到结果和写入的数据一致,测试成功
4.运行PCF8574代码可以听到蜂鸣器的间断尖叫,证明读写成功
将PCF8574调用的IIC函数替换成AT24C02使用的函数,然后更换输出PIN,你会发现,每次读写设备的时候蜂鸣器都会短鸣一下,很烦人,所以对于这种单地址读写的设备建议使用以上函数读写。
5.总体来说F4的硬件IIC还是比较方便设置和使用的,稳定性的话我跑了几个小时没发现异常的情况。
工程文件比较大,这里我只上传了驱动文件,仅供参考。
6.以上
本帖最后由 nealson 于 2018-7-4 16:31 编辑
硬件IIC读写测试利用的是板载AT24C02和PCF8574芯片,为什么用这两个呢?因为前者是双地址读写,后者是单地址读写,需要调用的函数不一样,当然可以一样,但是会有问题。
1.首先看一下数据手册,了解两个芯片的读写时序 先看下AT24C02的读写时序
可以看到读写时序是先传输设备地址,在传输数据地址,在传输数据(读写的区别在于设备地址的最低位,高为读,低为写)
再看下PCF8574T的读写时序
可以看到时序是先传输设备地址,然后直接传输数据(读写的区别在于设备地址的最低位,高为读,低为写)
2.初始化IIC设备,这里设置I2C的速度是标准的100000,没有使用快速的400K,可以兼容更多的设备。
HAL库关于IIC读写的几个函数
AT24C02调用的函数,这里要强调一点,AT24C02是分页写入的,每页8个字节,原子哥例程写入数据串是一个一个写入,如果需要连续写入数据可以一个一个写,连续写的时候注意页地址区分,否则会造成读写异常。这里我做了分页处理,可以参考下。
PCF8574T调用的函数
3.实现代码,如图是AT24C02的代码,屏蔽的是PCF8574的代码
4.运行AT24C02代码的结果
以下是需要写入的数据
初始化之后先读一包数据,看到和写入数据不一样,确保不作假
短暂延时之后写入数据,然后重新读,看到结果和写入的数据一致,测试成功
4.运行PCF8574代码可以听到蜂鸣器的间断尖叫,证明读写成功
将PCF8574调用的IIC函数替换成AT24C02使用的函数,然后更换输出PIN,你会发现,每次读写设备的时候蜂鸣器都会短鸣一下,很烦人,所以对于这种单地址读写的设备建议使用以上函数读写。
5.总体来说F4的硬件IIC还是比较方便设置和使用的,稳定性的话我跑了几个小时没发现异常的情况。
工程文件比较大,这里我只上传了驱动文件,仅供参考。
6.以上
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:nealson
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子