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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stm32學習筆記--spi與iic

          stm32學習筆記--spi與iic

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          關(guān)于上次說的要改程序的問題,
          //讀ADXL345寄存器
          //addr:寄存器地址
          //返回值:讀到的值
          u8 ADXL345_RD_Reg(u8 addr)
          {
          u8 temp=0;
          IIC_Start();
          IIC_Send_Byte(ADXL_WRITE); //發(fā)送寫器件指令
          temp=IIC_Wait_Ack();
          IIC_Send_Byte(addr); //發(fā)送寄存器地址
          temp=IIC_Wait_Ack();
          IIC_Start(); //重新啟動
          IIC_Send_Byte(ADXL_READ); //發(fā)送讀器件指令
          temp=IIC_Wait_Ack();
          temp=IIC_Read_Byte(0); //讀取一個字節(jié),不繼續(xù)再讀,發(fā)送NAK
          IIC_Stop(); //產(chǎn)生一個停止條件
          return temp; //返回讀到的值
          }
          這段寫寄存器代碼,不理解temp為什么要被頻繁的賦值,去掉后,宏觀看來對結(jié)果沒有影響。第二個不理解的地方是為什么在發(fā)送寄存器地址之后要從新啟動一次,因
          為在相似的寫寄存器函數(shù)中,在相同的位置不存在重啟代碼。注釋掉該句之后顯示“ADXL345 error”。
          這兩天主要看了三軸加速度計的程序,雖然例程里的能看懂,但是在四軸里的程序卻不那么容易,我甚至不明白為什么他要自己寫一個iic的函數(shù),我打算接下來把它的
          程序和例程里的程序?qū)φ諄砜?,看能不能找到什么頭緒。
          下面是對以前學過內(nèi)容的總結(jié):
          對位的尋址操作
          為了實現(xiàn)對SARM、I/O外設(shè)空間中某一位的操作,在尋址空間(4GB)另一地方取個別名區(qū)空間,從這地址開始,每一個字(32bit)就對應(yīng)SRAM或I/O的一位。即原來每
          個字節(jié)用一個地址,現(xiàn)在給字節(jié)中的每個位一個地址,實現(xiàn)了對位的尋址。
          spi與iic之間各自的優(yōu)劣
          1 硬件連接的優(yōu)劣
          SPI是[單主設(shè)備( single-master )]通信協(xié)議,這意味著總線中的只有一支中心設(shè)備能發(fā)起通信。當SPI主設(shè)備想讀/寫[從設(shè)備]時,它首先拉低[從設(shè)備]對應(yīng)
          的SS線(SS是低電平有效),接著開始發(fā)送工作脈沖到時鐘線上,在相應(yīng)的脈沖時間上,[主設(shè)備]把信號發(fā)到MOSI實現(xiàn)“寫”,同時可對MISO采樣而實現(xiàn)“讀”。
          主從設(shè)備必須使用相同的工作參數(shù)——SCLK、CPOL 和 CPHA,才能正常工作。如果有多個[從設(shè)備],并且它們使用了不同的工作參數(shù),那么主設(shè)備必須在讀寫不同從設(shè)
          備間重新配置這些參數(shù)。
          I²C 是多主設(shè)備的總線,I²C沒有物理的芯片選擇信號線,沒有仲裁邏輯電路,只使用兩條信號線—— „serial data? (SDA) 和 „serial clock? (SCL)。
          從上面的分析可以看出,在需要多個從設(shè)備的時候,iic比spi需要更少的信號線。
          2 速度比較
          spi為全雙工,速度可以達到10M,而iic快速模式為1M,需要額外I/O緩沖區(qū)的高速模式也才3.4M。
          3 總結(jié)
          I²C的優(yōu)點在于它的特色——用很輕盈的架構(gòu)實現(xiàn)了多主設(shè)備仲裁和設(shè)備路由。但是對使用的工程師來講,理解總線結(jié)構(gòu)更費勁,而且總線的性能不高。
          SPI的優(yōu)點在于-------它的結(jié)構(gòu)相當?shù)闹庇^簡單,容易實現(xiàn),并且有很好擴展性。SPI的簡單性不足稱其優(yōu)雅,因為要用SPI搭建一個有用的通信平臺,還需要在SPI之上構(gòu)建特定的通信協(xié)議軟件。也就是說要想獲得SPI特有而IIC沒有的特性——高速性能,工程師們需要付出更多的勞動。另外,這種自定的工作是完全自由的,這也說明為什么SPI沒有官方標準。I²C和SPI都對低速設(shè)備通信提供了很好的支持,不過,SPI適合數(shù)據(jù)流應(yīng)用,而I²C更適合“字節(jié)設(shè)備”的多主設(shè)備應(yīng)用。


          關(guān)鍵詞: stm32學習筆記spi與ii

          評論


          技術(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); })();