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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于鐵電存儲器FM25640在電表數(shù)據(jù)存儲中的應用

          基于鐵電存儲器FM25640在電表數(shù)據(jù)存儲中的應用

          作者: 時間:2009-12-29 來源:網(wǎng)絡 收藏

          SPI接口是一種時鐘和數(shù)據(jù)同步的串行接口,應使用SO、SI、SCK、CS四個引腳,可與任何具有SPI接口的MCU直接連接。對于沒有SPI接口的MCU,SPI可以與普通I/O口相連。然后用軟件模擬SPI接口,當然,也可以選擇其它帶有I2C總線接口和并口的FRAM產(chǎn)品。

          SPI有四種工作方式。分別為方式0、方式1、方式2和方式3,支持其中的方式0(CPOL=0,CPHA=0)和方式3(CPOL=1,CPHA=1),等兩種方式,數(shù)據(jù)可在時鐘的上升沿移進,而且數(shù)據(jù)一般出現(xiàn)在CS有效后的第一個時鐘的上升沿。因此,如果時鐘從高電平開始,將不能產(chǎn)生第一個有效的上升沿而導致數(shù)據(jù)傳輸失敗。數(shù)據(jù)傳輸時,所有移進和移出的數(shù)據(jù)都是8位為一組,它們與時鐘信號同步,最高有效位(MSB)在前,串行數(shù)據(jù)在時鐘的上升沿移進,并在時鐘的下降沿移出。FM25640在SPI方式0和SPI方式3時的操作時序如圖2所示。

          SPI接口是通過操作指令來控制的,F(xiàn)M25640的操作指令集如表1所列,該指令集共有6條指令。當有效后,第一個傳輸?shù)淖止?jié)就是操作指令,緊跟著操作指令之后的是兩字節(jié)的地址,該地址共16位,其中高三位不起作用,后13位則指定了一個唯一的地址。地址后面為所要寫入的數(shù)據(jù),若數(shù)據(jù)多于1個,則第一個數(shù)據(jù)之后的數(shù)據(jù)存儲地址由FM25640自動按順序增加。如果地址到達最高地址1FFFH,地址計數(shù)器將重新置為0000H。

          2 FM25640在數(shù)據(jù)存儲中的應用

          2.1 FM25640與MCU的連接電路

          本設計中的單片機選擇MOTOROLA公司的MC68HC908LJ12,這是一款適用于設計的MCU,內(nèi)含12KBFlash存儲器并可在線編程。同時還具有一個帶有紅外功能的串行通信接口SCI,一個高速SPI,8個鍵盤輸入中斷,以及內(nèi)部LCD驅動模塊,因而節(jié)省了外掛液晶驅動芯片。系統(tǒng)中的電能計量芯片則選擇美國ADI公司的三相電能計量芯片ADE7758,該芯片精確度高,可以提供有功功率、無功功率、視在功率、電壓有效值和電流有效值等多項數(shù)據(jù),具有兩路脈沖輸出,同時也帶有SPI串口。由于SPI接口可支持多個器件掛在同一個總線上,并可通過片選信號區(qū)分每一個器件,因此,將FM25640和ADE7758都通過SPI接口與單片機MC68HC908LJ12相連,并將MC68HC908LJ12的兩個I/O口PTA4、PTA5分別與FM25640和ADE7758的片選端CS相連接,就可以實現(xiàn)片選。其具體的連接電路如圖3所示。

          電能表相關文章:電能表原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();