本帖最后由 原同学 于 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,所以尽量不考虑软件模拟。上面那个程序应该怎么改才能正常运行? |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
希望能用硬件的。模拟的好像不能Level3优化,并且不能DMA
只有代码写得不好,才无法经过优化,我的所有代码都是开最高优化,妥妥的!!!至于不能DMA,I2C还能传大量数据了不成?
评分
查看全部评分
IO模拟如果可以最高优化那也可以作为备用方案。主要是唤醒之后要一直刷新OLED上的数据,之前用AVR的时候,刷的很慢,受不了才换stm32的,希望DMA能有用
OLED,点阵屏啊。。。200k的速度,10ms应该可以刷一次。。。模拟也是可以胜任的啊。。。当然了你非要用硬件,那就自己慢慢调喽,我只能说,ST的硬件I2C非常非常坑。。。本人亲自试过。。。不过有什么屏幕是只支持I2C接口,连SPi都不支持???这个屏幕也是牛逼!!!
我做过两块OLED都是SPI接口的,刷屏速率还可以。可以讨论下你们的接口设计。
评分
查看全部评分
现在终于调通了,中间遇到了不少坑,器件地址要填8位、读写寄存器要按字节来、OLED的数据寄存器在0x40而不是0x20等。现在用硬件I2C,400kHz非常流畅,看不出来卡屏。准备测试DMA模式下100Hz中断打断是否会影响。
看来真正的坑你还没遇到!!!等你遇到了,那才叫生不如死!!!
貌似已经遇到了,一开DMA就进HF,改了缓冲区又发现总线锁死了,没办法,只能用最普通的了。也许是我不太会用DMA的缘故。
真正的坑还有哪些?望版主指点