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

有人在调试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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版