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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430非模擬IIC總線控制程序

          MSP430非模擬IIC總線控制程序

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

          #if __VER__ < 200
          interrupt [USART0TX_VECTOR] void ISR_I2C(void)
          #else
          #pragma vector=USART0TX_VECTOR
          __interrupt void ISR_I2C(void)
          #endif //上面的程序其實只要編寫 :

          //#pragma vector=USART0TX_VECTOR __interrupt void ISR_I2C(void)就行.
          {
          switch (I2CIV)
          {
          case I2CIV_AL:
          {
          //仲裁中斷
          break;
          }
          case I2CIV_NACK:
          {
          //NACK中斷
          break;
          }
          case I2CIV_OA:
          {
          //自己地址中斷
          break;
          }
          case I2CIV_ARDY:
          {
          //訪問準(zhǔn)備好中斷
          break;
          }
          case I2CIV_RXRDY:
          {
          //接收準(zhǔn)備好中斷
          I2CBuffer[0]=I2CDRB;
          break;
          }
          case I2CIV_TXRDY:
          {
          //發(fā)送準(zhǔn)備好中斷
          I2CDRB = I2CBuffer[tx_count];
          tx_count = tx_count - 1;
          if (tx_count < 0)
          {
          //禁止發(fā)送中斷
          I2CIE &= ~TXRDYIE;
          }
          break;
          }
          case I2CIV_GC:
          {
          //一般調(diào)用中斷
          break;
          }
          case I2CIV_STT:
          {
          //起始條件中斷
          break;
          }
          }
          }
          void Init_IIC_Port(void)
          {
          //初始化端口寄存器 與IIC口無關(guān)的PX口關(guān)閉以便于對編寫系統(tǒng)板的綜合程序.
          //P1DIR = 0xFF;
          //P2DIR = 0xFF;
          P3DIR = 0xF5;
          //P4DIR = 0xFF;
          P5DIR = 0x7F;
          //P6DIR = 0xFF;
          //P4OUT = 0X11;
          //P5OUT &= 0XF0;
          P3SEL|=BIT1+BIT3; //在這里如果設(shè)置成

          }
          void Init_CLK(void)
          {
          unsigned int i;
          //將寄存器的內(nèi)容清零
          //XT2震蕩器開啟
          //LFTX1工作在低頻模式
          //ACLK的分頻因子為1
          BCSCTL1 = 0X00;
          do
          {
          // 清除OSCFault標(biāo)志
          IFG1 &= ~OFIFG;
          for (i = 0x20; i > 0; i--);
          }
          while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1

          //open XT2, LFTX2 選擇低頻率
          BCSCTL1 &= ~(XT2OFF + XTS); //BCSCTL1=0X00 功能一樣
          //DCO Rsel=7(Freq=3200k/25攝氏度)
          BCSCTL1 |= RSEL0 + RSEL1 + RSEL2;
          BCSCTL1 |= 0x07;
          //MCLK的時鐘源為TX2CLK,分頻因子為1
          BCSCTL2 += SELM1;
          //SMCLK的時鐘源為TX2CLK,分頻因子為1
          BCSCTL2 += SELS;
          }

          //對于系統(tǒng)時鐘的選擇關(guān)系到整個程序運行穩(wěn)定性.

          看到很多賣開發(fā)板的人將IIC硬件寫上去后再去搞個模擬的IIC總線程序. 感覺到有點說不出的感覺. 其實430的IIC不是專用來外擴展FLASH的,而是用來和一些特殊的電路連接,實現(xiàn)功能. 對于MSP430147~149 15X 16X 的芯片內(nèi)部有48~60K的Flash了還有必要來個模擬的IIC總線時序么.裝個UCOS都可以了.開發(fā)板要做的事情就是如何做好非模擬IIC程序的設(shè)計.更不是為了和C1搞比拼搶占市場.

          上面的程序是經(jīng)過MSP430F1611的測試.程序的大部分來自上,曾想自己從新開發(fā)定義一個,但想到網(wǎng)絡(luò)上沒有這個程序的完整版.我就修改了其中的幾個地方.一方面便于自己查看并復(fù)習(xí)也適于網(wǎng)絡(luò)上的朋友來討論交流.

          上一頁 1 2 3 下一頁

          評論


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