串行总线那些坑,你留意了吗?
时间:12-12
来源:互联网
点击:
串行通讯总线在嵌入式系统中是必不可少的一部分,处理器通过UART、I2C等这些总线来访问各种外设。如果您是一位嵌入式工程师,相信您一定和这些串行总线打过交道。那么串行总线协议的这些坑,您有没有遇到过呢?
比如,I2C总线忘了接上拉电阻,串口波特率不匹配,RS485忘了进行方向切换或者没有接终端匹配电阻,USB全速和低速模式该在哪根线加上拉、下拉电阻傻傻分不清(现在上下拉电阻都集成到处理器内部,以后不会再被坑了)等等。我们的一位客户最近就被SWD总线坑了一把,来看看他是怎么入的坑,又是怎么跳出的坑吧。
这位客户用编程器通过SWD总线对一款Cortex-M0芯片进行编程时,由于无法进入测试模式而无法对芯片编程。束手无策之下,客户找到了我们。我们的时序工程师仔细分析芯片数据手册后,发现该芯片编程时序的握手环节和其他芯片有明显区别,因此我们猜测客户的编程器很可能是和芯片握手失败才无法进入测试模式。
下图是芯片握手时序图,可以看出时序要求非常严格。只要总线握手成功,芯片进入测试模式,编程器即可获取芯片ID,并可以对芯片编程。如果总线握手失败,芯片就会开始执行片内Flash的用户代码而无法进行编程。
由于芯片的时钟精度、boot code文件大小不同,因此不同版本芯片的内部复位时间、boot code执行时间都有差异。为了确保芯片能正常进入测试模式,我们在将芯片时序添加到致远电子最新推出的4通道在线脱机编程器P800-ISP上时,进行了特殊处理:当P800-ISP向芯片发出复位信号后,立即重复发送SWD总线复位信号,直到获取芯片的应答。SWD总线建立连接后,P800-ISP通过设置芯片的TST_CTRL寄存器,使芯片进入测试模式,之后就可以对芯片的Flash正常编程了。
总结:
有了这个工具,串行总线应用不再是难题。
串行总线波特 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)