【BUG】发现一处零知开发板的硬件问题-Arduino中文社区 - Powered by Discuz! Archiver

t3486784401 发表于 2019-1-8 03:45

【BUG】发现一处零知开发板的硬件问题

今天粗略测试了零知开发板(标准F103RB版),发现一处应该能算“错误”的硬件设计,特来记录下。
经测试开发板 F103RB、板载接口 A4/A5,以及板载 EEPROM(24C02)连接如下:

F103RB.PC5 <=> A5 <=> EEPROM.PIN5(SDA)
F103RB.PC4 <=> A4 <=> EEPROM.PIN6(SCL)

由于 PC5/PC4 并非硬件 I2C,显然此 F103RB 将使用 IO 模拟 I2C:A5/A4分别模拟SDA/SCL。
然而问题来了:这个 SDA/SCL 顺序与标准 Arduino(例如UNO)相反!

标准的 Arduino 当中,A4 为 SDA,A5 为 SCL。从零知官方论坛截来的这个图片可以看出,零知也推荐 A4 接 SDA.
原链接:http://www.lingzhilab.com/forum.php?mod=viewthread&tid=659



也许有人说,既然是模拟 I2C,SDA/SCL 定义可以软件改,这样就适配标准 Arduino 了。
但是代价呢?核心板上有一个 SDA接在模拟SCL上、SCL接在模拟SDA上的 24C02 在抽风!
紧接着目测就是 24C02 频繁电平冲突,总线上总有一个玩意要报销。

该问题的根源在于:24C02的 SDA(SCL) 被连接在了 A5(A4) 上,但顺序不符合 Arduino 标准。
无论怎么定义模拟 I2C,A5/A4 上总有器件接反了,除非 I2C 用其他端口,也就是放弃与 Arduino 的兼容.....

以上,就是关于零知标准开发板的一点建议,私以为这个问题可大可小,但终究是问题。


附图 24C02 引脚定义:

零知实验室-roc 发表于 2019-1-8 08:57

本帖最后由 零知实验室-roc 于 2019-1-8 09:01 编辑

谢谢你提出问题,最开始的设计是有这个问题,不过我们在软件库上已经避免了,使用EEPROM库不用指定I2C的引脚,硬件上已经固定,使用I2C库时候是和Arduino兼容的,因此你这个问题在使用上并没有啥区别。

t3486784401 发表于 2019-1-8 18:27

零知实验室-roc 发表于 2019-1-8 08:57
谢谢你提出问题,最开始的设计是有这个问题,不过我们在软件库上已经避免了,使用EEPROM库不用指定I2C的引 ...

单独使用EEPROM肯定是没问题的,使用外挂 Arduino_I2C 设备就可能出问题了。

不是说通信成功一两次就没事,是连续几个小时的通信不能有冲突。
毕竟板载 24C02 在外部 I2C 通信时,处于总线反接的状态,并且不能避免。

结果就是:要么拆掉 24C02,要么不要用 Arduino_I2C 扩展板/器件。

零知实验室-roc 发表于 2019-1-9 09:38

t3486784401 发表于 2019-1-8 18:27
单独使用EEPROM肯定是没问题的,使用外挂 Arduino_I2C 设备就可能出问题了。

不是说通信成功一两次就没 ...

同时使用时候也是分时复用的,并不会冲突
页: [1]
查看完整版本: 【BUG】发现一处零知开发板的硬件问题