你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

模拟I2C通信协议的开发问题

[复制链接]
Pure Tiger 提问时间:2023-8-16 15:36 / 未解决

一个MCU芯片上有两个TM1637芯片,这两个芯片的SCL引脚分别为PB3、PC12;SDA引脚分别为PB4、PD2。通信的时候采样模拟I2C的方式进行通信,则对于这样的模块,驱动程序是否需要分开写?????

如果分开写,相当于重复做同样的工作,代码不简化!!!!

但如果放一起,又应该如何处理呢?

收藏 评论3 发布时间:2023-8-16 15:36

举报

3个回答
STMWoodData 回答时间:2023-8-16 16:03:30

简单点就是加个变量控制。在驱动里判断变量为0时用这个I2C的io,为1就用另外的I2C的io。

set_scl(var)

{

if(var) PB3=1;

else PC12=1;

}

clr_scl(var)

{

if(var) PB3=0;

else PC12=0;

}

butterflyspring 回答时间:2023-8-16 16:11:59
STM32F1最高跑72M,而I2C按传统的来说也支持400k速率,所以完全不用担心效率。
TM1637没看到地址设置,所以要分开写。
若想代码整齐点,尽量采用函数的方式。速度足够快,不会影响显示的。
TM1637 FUNCTION.PNG

xmshao 回答时间:2023-8-16 17:23:34
呵呵 不认为这里有什么铁规矩。


既然选择使用2组GPIO,即使写两套也没啥,代码结构清晰即可。也不至于增加多少代码量。


或许有人包括本人会考虑加些判断语句执行,感觉上是一套了,最终也要看个人最后选择。


如果其他人有更好方案,欢迎分享。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版