<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201612/328854.htm

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

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

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

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

          總結(jié):

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



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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();