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

有人在调试STM32F1的时候被硬件I2C坑了吗?为毛一直超时?

[复制链接]
原同学 提问时间:2017-9-16 14:23 /
本帖最后由 原同学 于 2017-9-16 14:55 编辑

最近在做一个可穿戴应用,因为ATMEGA328刷屏太慢卡顿明显遂换STM32F103C8T6。
电路比较简单,PA0-3是触摸按键,CubeMX中配置为EXTI0-3;SPI1用于与字库芯片通信,片选是PA4;I2C1上挂有DS3231、BMP280、SSD1306驱动的OLED;串口接ST-Link的VCP,SWD调试,系统只有高速时钟使用了外部8M晶振。
现在问题是操作OLED和DS3231有问题,单步发现是超时导致出错
代码在 http://github.com/XAS-712/MZY7-ZeroWatchProject
麻烦各路大佬帮忙看看是怎么回事,实在不行就换F072C8T6,手里还有两片
还有,新建了个工程读写24C02跟OLED数据寄存器一样的地址,没有任何问题,出错就重新初始化,没作更进一步防爆处理,如果需要稍后把这个工程放上来

因为考虑使用DMA,所以尽量不考虑软件模拟。上面那个程序应该怎么改才能正常运行?
收藏 评论9 发布时间:2017-9-16 14:23

举报

9个回答
MrJiu 回答时间:2017-9-16 16:06:36
我就不说其他的了,模拟走起!!!
原同学 回答时间:2017-9-16 16:30:45
MrJiu 发表于 2017-9-16 16:06
我就不说其他的了,模拟走起!!!

希望能用硬件的。模拟的好像不能Level3优化,并且不能DMA
MrJiu 回答时间:2017-9-16 17:42:57
原同学 发表于 2017-9-16 16:30
希望能用硬件的。模拟的好像不能Level3优化,并且不能DMA

只有代码写得不好,才无法经过优化,我的所有代码都是开最高优化,妥妥的!!!至于不能DMA,I2C还能传大量数据了不成?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

原同学 回答时间:2017-9-16 18:37:11
MrJiu 发表于 2017-9-16 17:42
只有代码写得不好,才无法经过优化,我的所有代码都是开最高优化,妥妥的!!!至于不能DMA,I2C还能传大 ...

IO模拟如果可以最高优化那也可以作为备用方案。主要是唤醒之后要一直刷新OLED上的数据,之前用AVR的时候,刷的很慢,受不了才换stm32的,希望DMA能有用
MrJiu 回答时间:2017-9-16 22:53:01
原同学 发表于 2017-9-16 18:37
IO模拟如果可以最高优化那也可以作为备用方案。主要是唤醒之后要一直刷新OLED上的数据,之前用AVR的时候 ...

OLED,点阵屏啊。。。200k的速度,10ms应该可以刷一次。。。模拟也是可以胜任的啊。。。当然了你非要用硬件,那就自己慢慢调喽,我只能说,ST的硬件I2C非常非常坑。。。本人亲自试过。。。不过有什么屏幕是只支持I2C接口,连SPi都不支持???这个屏幕也是牛逼!!!
张亚飞 回答时间:2017-9-18 09:21:20
原同学 发表于 2017-9-16 18:37
IO模拟如果可以最高优化那也可以作为备用方案。主要是唤醒之后要一直刷新OLED上的数据,之前用AVR的时候 ...

我做过两块OLED都是SPI接口的,刷屏速率还可以。可以讨论下你们的接口设计。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

原同学 回答时间:2017-9-22 20:55:17
MrJiu 发表于 2017-9-16 22:53
OLED,点阵屏啊。。。200k的速度,10ms应该可以刷一次。。。模拟也是可以胜任的啊。。。当然了你非要用硬 ...

现在终于调通了,中间遇到了不少坑,器件地址要填8位、读写寄存器要按字节来、OLED的数据寄存器在0x40而不是0x20等。现在用硬件I2C,400kHz非常流畅,看不出来卡屏。准备测试DMA模式下100Hz中断打断是否会影响。
MrJiu 回答时间:2017-9-23 00:37:07
原同学 发表于 2017-9-22 20:55
现在终于调通了,中间遇到了不少坑,器件地址要填8位、读写寄存器要按字节来、OLED的数据寄存器在0x40而 ...

看来真正的坑你还没遇到!!!等你遇到了,那才叫生不如死!!!
原同学 回答时间:2017-9-23 08:23:18
MrJiu 发表于 2017-9-23 00:37
看来真正的坑你还没遇到!!!等你遇到了,那才叫生不如死!!!

貌似已经遇到了,一开DMA就进HF,改了缓冲区又发现总线锁死了,没办法,只能用最普通的了。也许是我不太会用DMA的缘故。
真正的坑还有哪些?望版主指点

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版