新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 串行總線那些坑,你留意了嗎?

串行總線那些坑,你留意了嗎?

作者: 時間:2016-12-12 來源:網(wǎng)絡(luò) 收藏
串行通訊總線嵌入式系統(tǒng)中是必不可少的一部分,處理器通過UART、I2C等這些總線來訪問各種外設(shè)。如果您是一位嵌入式工程師,相信您一定和這些串行總線打過交道。那么串行總線協(xié)議的這些坑,您有沒有遇到過呢?

本文引用地址:http://2s4d.com/article/201612/328854.htm

比如,I2C總線忘了接上拉電阻,串口波特率不匹配,RS485忘了進(jìn)行方向切換或者沒有接終端匹配電阻,USB全速和低速模式該在哪根線加上拉、下拉電阻傻傻分不清(現(xiàn)在上下拉電阻都集成到處理器內(nèi)部,以后不會再被坑了)等等。我們的一位客戶最近就被SWD總線坑了一把,來看看他是怎么入的坑,又是怎么跳出的坑吧。

這位客戶用編程器通過SWD總線對一款Cortex-M0芯片進(jìn)行編程時,由于無法進(jìn)入測試模式而無法對芯片編程。束手無策之下,客戶找到了我們。我們的時序工程師仔細(xì)分析芯片數(shù)據(jù)手冊后,發(fā)現(xiàn)該芯片編程時序的握手環(huán)節(jié)和其他芯片有明顯區(qū)別,因此我們猜測客戶的編程器很可能是和芯片握手失敗才無法進(jìn)入測試模式。

下圖是芯片握手時序圖,可以看出時序要求非常嚴(yán)格。只要總線握手成功,芯片進(jìn)入測試模式,編程器即可獲取芯片ID,并可以對芯片編程。如果總線握手失敗,芯片就會開始執(zhí)行片內(nèi)Flash的用戶代碼而無法進(jìn)行編程。

由于芯片的時鐘精度、boot code文件大小不同,因此不同版本芯片的內(nèi)部復(fù)位時間、boot code執(zhí)行時間都有差異。為了確保芯片能正常進(jìn)入測試模式,我們在將芯片時序添加到致遠(yuǎn)電子最新推出的4通道在線脫機(jī)編程器P800-ISP上時,進(jìn)行了特殊處理:當(dāng)P800-ISP向芯片發(fā)出復(fù)位信號后,立即重復(fù)發(fā)送SWD總線復(fù)位信號,直到獲取芯片的應(yīng)答。SWD總線建立連接后,P800-ISP通過設(shè)置芯片的TST_CTRL寄存器,使芯片進(jìn)入測試模式,之后就可以對芯片的Flash正常編程了。

總結(jié):

有了這個工具,串行總線應(yīng)用不再是難題。



關(guān)鍵詞: 串行總線波特

評論


技術(shù)專區(qū)

關(guān)閉