|
最近一直在折腾烧录器,目前折腾出来了stm32的F0,F2,stm8s,以及瑞萨的RL78,stm32和瑞萨的都是按照协议来就行了,stm32主要参考了H7,感谢大神的分享,stm8s的就有些区别了,采用的是DMA+定时器的方式,会用到两个定时器器,定时器A用两个通道捕获, 定时器B,输出PWM模拟SWIM协议,定时器A两个通道合作捕获低电平的时间,ch1配置为下降沿复位定时器,ch2配置为上升沿捕获,ch2捕获的数据就是低电平的时间,这里遇到的是坑,最开始在stm32103上弄swim协议,用到两个DMA,而且DMA同时工作,偶尔会遇到协议通讯失败,后来跟踪发现DMA没有传输数据到PWM输出,但是DMA 的计数值缺减1,不确定在103平台上两个DMA同时传输,会不会产生冲突,配置DMA的优先级也不行,现在换到F4平台,同样是双DMA同时传输(一个DMA捕获,一个DMA传输占空比到CCR),连续测试下来没有再出现问题,可以参考https://bbs.21ic.com/icview-1719412-1-7.html?_dsign=4c98fc94,再传一个采用单DMA的实现SWIM的例子,只采用了DMA捕获低电平,使用GPIO模拟SWIM协议 |
|