C8051F340 外接 FM24C04 时的端口配置问题
扫描二维码
随时随地手机看文章
原来是想利用单片机自带的 SMBus 端口, 但是官方自带的例程用了好几个定时器,而我的这个小项目也需要很多定
时器资源, 不够用了. 擦.........所以干脆用 IO 口模拟I2C 时序来操作 FM24C04 得了, 项目对时间要求也不苛
刻.
所以, 就出现了文章要介绍的问题:
由于绘制原理图时, 已经将 SMBus 的端口 SDA/SCL(对应 P0_0/P0_1) 连接到了 FM24C04 的SDA 和 SCL 上.
所以按照一般操作, 我把 XBR0 的 SMB0E使能并连接到端口. 然后将对应的 IO 口P0_0 和 P0_1 设置成漏极开
路, 按说这样就可以了是不是? 其实不是, 操作的时候读上来的数据一直是 0xFF, 可能就是高阻态.
我检查了下读写操作代码, 没有任何问题, 增减延时改变时序也是不行. 所以, 我怀疑在交叉开关这出了问题.
想了想觉得, 既然我都用模拟的时序了. 干吗还用设置成开漏呢? 干吗还用将端口配置给SMBus 呢? 推挽不也
是可以的吗? 所以如下图, 将 SMB0E 置零. 烧写调试运行, 读和写都行了. 另外对应的 IO 口设置
成开漏或者推挽都是可以正常进行操作的.