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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 帶RTC的I2C總線鐵電存儲器FM31256的設(shè)計

          帶RTC的I2C總線鐵電存儲器FM31256的設(shè)計

          作者: 時間:2018-08-28 來源:網(wǎng)絡(luò) 收藏

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

          P5OUT |=RTC_SCL;// SCL=1

          delay(IIC_DELAY);

          P5OUT =~ RTC_SCL;// SCL=0}

          void _Send_noAck( void ) {/*不應(yīng)答程序*/

          P5OUT |=RTC_SCL;// SCL=1

          delay(IIC_DELAY);

          P5OUT =~ RTC_SCL;// SCL=0}

          說明:SCL線是高電平時,SDA線從高電平向低電平切換,表示起始條件;當(dāng)SCL是高電平時,SDA線由低電平向高電平切換,表示停止條件。相關(guān)的確認(rèn)時鐘脈沖由主機(jī)產(chǎn)生,在確認(rèn)的時鐘脈沖器件發(fā)送方釋放SDA(高電平),在此期間接收方須將SDA拉低。

          void _transfByte_to_IIC( unsigned char tran_byte ) {/* CPU字節(jié)發(fā)送程序*/

          unsigned char i , current_bit =0x80;

          P5OUT =~ RTC_SCL;

          delay(IIC_DELAY);

          for( i=0; i =7; i++ ) {

          if ( tran_byte current_bit )

          P6OUT |= RTC_SDA;

          else

          P6OUT =~ RTC_SDA;

          current_bit >>=1;

          delay(IIC_DELAY);

          P5OUT |=RTC_SCL;//SCL=1

          delay(IIC_DELAY);

          P5OUT =~ RTC_SCL;//SCL=0

          delay(IIC_DELAY);

          }

          }

          unsigned char FM31256_receByte_from_IIC( void ){/*CPU字節(jié)接收程序*/

          unsigned char mvalue, i, rece_data =0;

          P6DIR =~ RTC_SDA;//設(shè)置為輸入方向

          P5OUT =~ RTC_SCL; //SCL=0

          delay(IIC_DELAY);

          for(i=0;i8;i++) {

          rece_data = rece_data1;

          P5OUT |=RTC_SCL;//SCL=1

          delay(IIC_DELAY);

          mvalue = P6IN RTC_SDA;//當(dāng)前位的值

          if( mvalue )//接收位為高

          rece_data = rece_data | 0x01;

          else//接收位為低

          rece_data = rece_data 0xFE;

          P5OUT =~ RTC_SCL;//SCL=0

          delay(IIC_DELAY);

          }

          P6DIR |=RTC_SDA;//P6.6輸出

          return(rece_data);//返回收到的字節(jié)

          }

          說明:發(fā)送到SDA線上的每個字節(jié)須為8位。tran_byte為CPU要發(fā)送的字節(jié),CPU讀入的數(shù)據(jù)存儲在rece_data中。對FM31256存儲器可以直接對當(dāng)前地址進(jìn)行“讀”操作,也可以連續(xù)“讀/寫”多個字節(jié)而無須逐一指定地址。依據(jù)上述一般步驟,對存儲器的訪問操作可歸納為3種基本操作: ① 設(shè)置當(dāng)前操作目標(biāo)地址; ② 寫入數(shù)據(jù); ③ 讀出數(shù)據(jù)。

          訪問存儲器操作有多種,如內(nèi)存“寫”、當(dāng)前地址或順序連續(xù)“讀”和隨機(jī)地址“讀”操作。在控制程序中,需要向FM31256內(nèi)存中寫入并讀出給定參數(shù)、故障信息等數(shù)據(jù)。內(nèi)存讀/寫的方法如下:

          內(nèi)存寫操作,首先由CPU發(fā)送從機(jī)地址,然后是內(nèi)存16位地址,主機(jī)通過設(shè)置從機(jī)地址字節(jié)的最低位為0聲明一個寫操作;接收應(yīng)答信號后,CPU向FM31256發(fā)送數(shù)據(jù)的每個字節(jié),之后器件又產(chǎn)生應(yīng)答信號,任何數(shù)量的連續(xù)字節(jié)可以被寫入,以停止信號結(jié)束傳輸。有兩種類型的讀操作:當(dāng)前地址讀操作和隨機(jī)地址讀操作。讀操作同樣先由CPU發(fā)送從機(jī)地址,主機(jī)通過設(shè)置從機(jī)地址字節(jié)的最低位為1聲明一個讀操作。當(dāng)要進(jìn)行隨機(jī)讀操作時,還要在讀取數(shù)據(jù)之前,發(fā)送16位內(nèi)存地址之后讀取任意個字節(jié),每個字節(jié)后應(yīng)跟隨應(yīng)答信號,以停止信號結(jié)束傳輸。

          在電磁鑄軋電源控制裝置的主控程序中,還將調(diào)用時鐘刷新函數(shù)Flash_time()、時鐘寫入函數(shù)Write_time()、寄存器寫入函數(shù)Register_write()和寄存器讀出函數(shù)Register_read()。

          啟動RTC和WatchDog的流程圖如圖4所示。

          圖4 啟動RTC和WatchDog的流程圖

          結(jié)語

          將鐵電存儲器用于電磁鑄軋電源控制裝置中,與MSP430系列單片機(jī)相結(jié)合,充分發(fā)揮了其強(qiáng)大的功能;同時取代了傳統(tǒng)的EEPROM和實時時鐘芯片,既降低了硬件成本,又簡化了軟件設(shè)計。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: FM31256 MSP430單片機(jī)

          評論


          相關(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); })();