新聞中心

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

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

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

本文引用地址:http://m.butianyuan.cn/article/201612/328854.htm

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

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

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

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

總結(jié):

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



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

評(píng)論


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

關(guān)閉