串行總線(xiàn)那些坑,你留意了嗎?
比如,I2C總線(xiàn)忘了接上拉電阻,串口波特率不匹配,RS485忘了進(jìn)行方向切換或者沒(méi)有接終端匹配電阻,USB全速和低速模式該在哪根線(xiàn)加上拉、下拉電阻傻傻分不清(現在上下拉電阻都集成到處理器內部,以后不會(huì )再被坑了)等等。我們的一位客戶(hù)最近就被SWD總線(xiàn)坑了一把,來(lái)看看他是怎么入的坑,又是怎么跳出的坑吧。
這位客戶(hù)用編程器通過(guò)SWD總線(xiàn)對一款Cortex-M0芯片進(jìn)行編程時(shí),由于無(wú)法進(jìn)入測試模式而無(wú)法對芯片編程。束手無(wú)策之下,客戶(hù)找到了我們。我們的時(shí)序工程師仔細分析芯片數據手冊后,發(fā)現該芯片編程時(shí)序的握手環(huán)節和其他芯片有明顯區別,因此我們猜測客戶(hù)的編程器很可能是和芯片握手失敗才無(wú)法進(jìn)入測試模式。
下圖是芯片握手時(shí)序圖,可以看出時(shí)序要求非常嚴格。只要總線(xiàn)握手成功,芯片進(jìn)入測試模式,編程器即可獲取芯片ID,并可以對芯片編程。如果總線(xiàn)握手失敗,芯片就會(huì )開(kāi)始執行片內Flash的用戶(hù)代碼而無(wú)法進(jìn)行編程。
由于芯片的時(shí)鐘精度、boot code文件大小不同,因此不同版本芯片的內部復位時(shí)間、boot code執行時(shí)間都有差異。為了確保芯片能正常進(jìn)入測試模式,我們在將芯片時(shí)序添加到致遠電子最新推出的4通道在線(xiàn)脫機編程器P800-ISP上時(shí),進(jìn)行了特殊處理:當P800-ISP向芯片發(fā)出復位信號后,立即重復發(fā)送SWD總線(xiàn)復位信號,直到獲取芯片的應答。SWD總線(xiàn)建立連接后,P800-ISP通過(guò)設置芯片的TST_CTRL寄存器,使芯片進(jìn)入測試模式,之后就可以對芯片的Flash正常編程了。
總結:
有了這個(gè)工具,串行總線(xiàn)應用不再是難題。
評論