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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI接口基礎(chǔ)上的各種串行通信工作方式配置及驅(qū)動(dòng)編程

          SPI接口基礎(chǔ)上的各種串行通信工作方式配置及驅(qū)動(dòng)編程

          作者: 時(shí)間:2012-10-10 來(lái)源:網(wǎng)絡(luò) 收藏

            圖2中,筆者設(shè)計(jì)的基本協(xié)議如下:SPI的工作模式是主機(jī)用PCA定時(shí)器進(jìn)行數(shù)據(jù)連續(xù)發(fā)、收,從機(jī)用串行中斷進(jìn)行數(shù)據(jù)連續(xù)收、發(fā)。建立收發(fā)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包8個(gè)字節(jié),主從機(jī)均建立一個(gè)8個(gè)字節(jié)的發(fā)送數(shù)據(jù)緩沖區(qū)(spi send buf[8])和一個(gè)8個(gè)字節(jié)的接收數(shù)據(jù)緩沖區(qū)(spi_re cv_buf[8]),并建立一個(gè)完整數(shù)據(jù)包接收完畢標(biāo)志(spi_recv_flag)。當(dāng)用戶需要發(fā)送數(shù)據(jù)時(shí),隨時(shí)可以將發(fā)送數(shù)據(jù)包填入發(fā)送緩沖區(qū),當(dāng)需要接收數(shù)據(jù)時(shí),隨時(shí)測(cè)試接收標(biāo)志是否置傳,這樣從接收數(shù)據(jù)緩沖區(qū)中得到對(duì)方發(fā)來(lái)的數(shù)據(jù)包。按照上述協(xié)議,設(shè)置好以后,用戶的數(shù)據(jù)收發(fā)只要面對(duì)本協(xié)議設(shè)置的通信緩沖區(qū),而無(wú)需關(guān)注如何工作。從而滿足數(shù)據(jù)雙向傳輸、隨機(jī)收發(fā)的要求?;緟f(xié)議構(gòu)造示意圖如圖3所示。

            注意:筆者主機(jī)顯示設(shè)備為L(zhǎng)CD12864,從機(jī)顯示設(shè)備為8個(gè)數(shù)碼管,為縮短篇幅,其顯示驅(qū)動(dòng)程序未列出。從程序中可以看出,在發(fā)送一個(gè)字節(jié)的同時(shí),接收一個(gè)字節(jié),這是SPI與其他方式本質(zhì)的不同。此外,筆者在接近1 MHz的極限速率下作了測(cè)試,數(shù)據(jù)傳輸穩(wěn)定。

            3 高級(jí)協(xié)議的設(shè)計(jì)和實(shí)現(xiàn)

            基本協(xié)議較簡(jiǎn)單,可以保證通信雙方能夠可靠地進(jìn)行數(shù)據(jù)傳輸,但上述協(xié)議的實(shí)現(xiàn)依賴于從機(jī)中斷方式。而SPI中斷與UART串行中斷共用,當(dāng)從機(jī)串行口用于其他通信時(shí),就要避免通信中斷的相互干擾。復(fù)雜電子系統(tǒng)通信配置圖如圖4所示。

            圖4中的單片機(jī)串口只是數(shù)據(jù)發(fā)送,而無(wú)需接收數(shù)據(jù),也只需單向數(shù)據(jù)傳輸。采用查詢方式,不占用中斷,串行4號(hào)中斷用于SPI通信。因此,可以用SPI基本協(xié)議完成單片機(jī)雙機(jī)通信功能。若電子系統(tǒng)與上位機(jī)之間有信息交互的要求,并且收發(fā)數(shù)據(jù)皆為隨機(jī),此時(shí)系統(tǒng)通信的配置模式如圖4所示。

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理




          關(guān)鍵詞: SPI接口 串行通信 工作方式

          評(pí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); })();