色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 有關I2C設計時應注意的細節(jié)問題

          有關I2C設計時應注意的細節(jié)問題

          作者: 時間:2016-11-21 來源:網(wǎng)絡 收藏
          1,在硬件設計時,要注意SCL和SDA線要加10K的上拉電阻,因為其端口配置內部沒有上拉電阻,要不然兩端口在初始狀態(tài)下為低電平,在軟件操作I2C總線置STA信號時是不會有反應的。

          2,要注意檢查下功率控制寄存器PCONP相應位,確保該功能模塊是打開的。

          本文引用地址:http://cafeforensic.com/article/201611/319140.htm

          3 如果根據(jù)I2C狀態(tài)字進行相應處理采用中斷方式的話,還應中斷的相關設置。

          【1】對于LPC21xx,I2C初始化應該如下:

          static void BSP_I2C_Init(CPU_INT32U fi2c)
          {
          CPU_INT32U Fpclk = BSP_CPU_PclkFreq();

          //PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; // 設置I2C控制口有效
          PINSEL0_bit.P0_2 = 1;//設置I/O口工作模式,使用I2C0口,P0.2,P0.3和UART0的P0.0,P0.1。其余口為GPIO口
          PINSEL0_bit.P0_3 = 1;

          PCONP_bit.PCI2C = 1; //配置PCONP功率模塊使能I2C
          if(fi2c>400000) fi2c = 400000;

          I2SCLH = (Fpclk/fi2c + 1) / 2;//高電平占空比寄存器
          I2SCLL = (Fpclk/fi2c) / 2; //低電平占空比寄存器
          //配置成I2C主模式
          I2CONCLR = STA|SI|AA|STO; //分別為:起始標志(STA)|I2C中斷標(SI)|應答標志(AA)|停止標志(STO)
          I2CONSET = I2CEN; //I2EN=1,使能I2C功能


          // 設置I2C中斷允許
          VICIntSelect &= ~(1 << VIC_I2C);// 設置所有通道為IRQ中斷
          VICVectCntl4 = 0x20|VIC_I2C;// I2C通道分配到IRQ slot 0,即優(yōu)先級最高
          VICVectAddr4 = (CPU_INT32U)I2C_IRQ_ISR_handler; // 設置I2C中斷向量地址
          VICIntEnable |= (1 << VIC_I2C); // 使能I2C中斷
          }

          注意上面藍色粗體部分,搞錯了就不會進入中斷或者導致其它中斷源進入中斷,VIC_I2C為通道號,細節(jié)參考其用戶手冊。

          【2】啟動I2C總線,代碼如下:

          I2CONCLR = STA|SI|AA; //0x2C; //起始標志(STA)|I2C中斷標(SI)|應答標志(AA)
          I2CONSET = I2CEN|STA; //0x60; //I2C接口使能,設置為主機,并啟動總線
          //I2CONSET = STA; //置位 STA進入I2C主發(fā)送器模式,啟動發(fā)送START脈沖
          while(0==I2C_end); //等待中斷
          if(1==I2C_end) return(1);
          else return(0);

          只有設置的起始標志位,才能啟動I2C總線。

          上面的代碼是參考周立功官網(wǎng)的實驗例程,藍色字體是做的修改。



          評論


          技術專區(qū)

          關閉