《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于MSP430F449的數據存儲和USB串行通信實現
基于MSP430F449的數據存儲和USB串行通信實現
摘要: 在數據采集設備以及具有相關功能的儀器設計中,數據的存儲和傳輸是一個非常重要的環節,本文在成功實踐的基礎上,介紹微控制器MSP430F449實現數據的采集后的數據存儲及與上位機數據通信的相關內容。文中給出了實用的硬件電路和部分軟件代碼,詳細講解了在數據存儲中需要注意的一些環節。
Abstract:
Key words :

  在數據采集設備以及具有相關功能的儀器設計中,數據的存儲和傳輸是一個非常重要的環節,本文在成功實踐的基礎上,介紹微控制器MSP430F449實現數據的采集后的數據存儲及與上位機數據通信的相關內容。文中給出了實用的硬件電路和部分軟件代碼,詳細講解了在數據存儲中需要注意的一些環節。

  在數據采集和測量儀器尤其是便攜式設備中,數據存儲和傳輸是不可避免的問題,近年來TI公司推出的低功耗微控制器MSP430,在儀器設計和制造領域引起巨大變革,新型控制器和大容量串行存儲器的應用大大提高產品了的性能。本文主要解決兩個問題

  1 解決經過MSP430采集后的數據與EEPROM24C256的數據接口問題,也就是數據存儲問題;

  2 解決EEPROM與上位機(普通微機)的數據通信問題,也就是存儲后的數據上傳問題。

  首先對主要的集成電路做簡單介紹

  MSP430F449簡介

  MSP430F449是MSP430系列中的一種,MSP430系列是一種具有集成度高,功能豐富、功耗低等特點的16位單片機。它的集成調試環境Embedded Workbench 提供了良好的C語言開發平臺。設計中基于程序的復雜性和程序容量大的要求選擇了MSP430F449,這款芯片具有64K程序存儲器,可以滿足大部分復雜控制的需要;它的封裝100-PIN QFP具有良好的互換性,與MSP430F437 、MSP430F435等芯片具有完全一致的管腳可以在程序量上進行合理選擇。

  24C256簡介

  24C256是支持I2C協議的串行EEPROM,容量32768字節。

24C256的管腳圖

  以上是24C256的管腳圖,其中A0,A1,A2構成存儲器的物理地址,作為I2C總線上區分不同存儲器的控制地址,可以在I2C總線上同時連接8個設備。 WP是寫保護,高電平將禁止對器件的寫操作;SCL和SDA是數據傳輸的控制線,其中SCL是時鐘,SDA是雙向數據線,用來完成數據的寫入和讀出,數據的傳輸按照I2C協議的要求由時鐘端SCL配合共同完成。

  CP2102簡介

  CP2102是USB到UART的橋接電路,完成USB數據和UART數據的轉換,電路連接簡單,數據傳輸可靠,把下位機串行數據轉換成USB數據格式,方便實現數據通信,在上位機上通過運行該芯片的驅動程序把USB數據可以按照簡單的串口進行讀寫操作編程簡單,操作靈活。

MSP430F449 接口原理圖

圖1 MSP430F449 接口原理圖

  以上是MSP430F449與EEPROM以及CP2102的接口原理圖,本文重點在于介紹數據采集過程完成以后的數據存貯和數據傳輸。

 

  數據的采集多種多樣,可以經過片內的ADC轉換器對模擬量進行采集,也可以通過獨立的端口控制線對特殊的傳感器比如溫度傳感器、壓力傳感器等進行數據轉換,這不作為本文介紹的內容。本文主要是針對不同的采集過程完成后數據的存儲和傳輸處理。

  數據自動存儲的客觀要求

  在許多測量過程中,不僅要求讀取簡單的儀表值,而且還需要對一段時間的數據進行科學的分析和處理以取得預測和分析的目的。在這種情況下,可能要求測量時間長,采集要求自動進行,無需人工值守,所以數據必須自動存儲;另一個原因,采集數據的頻率比較高,人的觀察不能滿足實際需要,這就要求對采集的數據進行有效的存儲。

  集成電路合理選擇

  有很多大容量的FLASH芯片已經得到廣泛應用,但是這類芯片口線較多,需要占用較多的控制器資源,在控制外圍器件多,接口復雜的情況下,特別是便攜式儀器功能全、體積小,為了精簡外圍電路,在不影響存儲量的情況下,具有I2C接口的串行EEPROM就成為了最佳選擇。

  24C256程序控制原理

  24C256是具有I2C接口的512x64存儲器,在數據的存儲過程中除了遵循I2C協議必須的邏輯以外,一個最容易忽視并且最容易導致出錯的問題就是存儲地址問題。

  24C256的數據容量是32768,即可以存儲的有效字節數。所以它的地址是16位整型數,有效范圍是0~32768,數據字節為單位存儲,在16位地址其中有效數據只有15位,低6(0~5)位地址表示的容量是0~63,然后連續的9(6~14)位地址表示頁碼的范圍是0~511,在數據連續存儲過程中,相同的頁面內,存儲地址自動完成累加過程;數據在不同頁面的存儲時,地址不能自動累加,如果不做正確處理,數據將從本頁開始的地址重新開始覆蓋已經存在的數據。例如,地址是63(二進制碼111111)表示的是第0頁的最后一個存儲空間,地址64(二進制碼1,000000)表示第1頁最開始的存儲空間。在當前存儲地址是63時如果該器件處于連續存儲模式下,數據將出錯。

  原因是什么呢? 24C256支持數據的連續存儲,最大的存貯數量是64即一頁的內容,如果在地址選擇上超過了這個限制,數據將會覆蓋本頁開始的位置重新存儲,這就造成數據的錯誤,在使用上,雖然數據是分頁存儲的,但在形式上是連續數據,所以存儲中不需要特意區分頁地址和頁內地址。

 

  在連續存儲中,盡管數據每次存儲的數量小于64,數據也可能出錯,例如每次存儲數量為11,地址的變化是0,11,22,33,44,55,66……,看上去沒有什么問題,地址是按照每次11遞增的,然而存儲的結果還是出錯了,原因是什么呢?在地址55開始的空間無法提供連續11個頁內存儲空間,當地址增加到63以后數據又從該頁0地址重新開始,從而導致數據儲存的錯誤。有效的解決辦法是如果使用連續存儲模式,地址的安排上要使存儲塊的大小為64,32,16,8,4,2此外都不能使用連續地址存儲。如果數據采集中的有效數據位小于64,比如每次采集的結果是30字節,在連續存儲模式下要按照32為單位存儲,不足的字節補零處理。

  以下是24C256數據傳輸基本控制模塊

  //         延時處理模塊
void IIC_Delay(void)   
{
 _NOP();
 _NOP();
 _NOP();
}

  //         啟動I2C模塊
void start_IIC(void)      //          啟動I2
{
 P2OUT&=0xf9;                    //設置P2輸出
 P2DIR&=0XFD;                   //SDA=1, 上拉電阻使得P2.1為H,FD=1111,1101
P2DIR&=0XFB;                   //SCL=1              FB="1111",1011
P2DIR|=0X02;                     // SDA="0"
P2DIR|=0X04;                     // SCL="0"
}

  //         停止I2C模塊
void stop_IIC(void)       //         
{
 P2DIR|=0X02;//SDA=0
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
P2DIR&=0XFD;//SDA=1,             上拉電阻使得P2.1為H,FD=1111,1101
 IIC_Delay();
P2DIR|=0X04;// SCL="0"
}

 

  //         發送 “ 0”模塊
void send_zero(void)      //             
{
 P2DIR|=0X02;// SDA="0"
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
}

 

  //       發送  1模塊
void send_one(void)       //          
{
 P2DIR&=0XFD;//SDA=1,           上拉電阻使得P2.1為H,FD=1111,1101
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
}

  //        發送單字符數據
void send _char(unsigned char data_out)    //    
{
  unsigned char i,tmp=0x80;
  for(i=0;i<8;i++)
  {
    if((data_out & tmp)>0)
    send_one();
    else
    send_zero();
    tmp/=2;
  }
}

  //         讀單字符數據
unsigned char read_char(void) 
{
 unsigned char i,tmp=0x80;
 unsigned char data1=0;
for (i=0;i<8;i++)
{
   P2DIR&=0XFD;//SDA=1,  11111101
   IIC_Delay();//
   P2DIR&=0XFB;//SCL=1              FB="1111",1011
   IIC_Delay();
   if((P2IN&0x02)>0x00)
   {
     data1|=tmp;
   }
   P2DIR|=0X04;// SCL="0"
   IIC_Delay();
   tmp/=2;
 }
 return data1;
}

  //    &    檢查應答信號模塊
void iic_ACK(void)
{
 ack_flag=0x00;
 P2DIR&=0XFD;//SDA=1,             FD="1111",1101
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
IIC_Delay();
while((P2IN&BIT1)==BIT1);
P2DIR|=0X04;// SCL="0"
 IIC_Delay();
}

 

  //        拒絕應答模塊
void iic_NACK(void)  & nbsp;       {
 P2DIR&=0XFD;//SDA=1,
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
 IIC_Delay();
 P2DIR|=0X02;// SDA="0"
 IIC_Delay();//         
}

  //        寫連續數據模塊
void WriteNbyte(unsigned char *p,unsigned int addr,unsigned char number)   
{
     start_IIC();
    send_char(0xa2);
    iic_ACK();   
    send_char(addr/256);    //high address byte
    iic_ACK();
    send_char(addr%256);
    iic_ACK();       
           do
                {
                    send_char(*p);
                    p++;
                    iic_ACK();                 
                }
                while(--number);
         
    stop_IIC();
    delay(10);
}

 

  //        發送應答模塊:ACK (LOW)
void S_ACK(void)          
{
 P2DIR|=0X02;// SDA="0"
 ;IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
 IIC_Delay();
}

  //        連續讀字符模塊
void ReadNbyte(unsigned char *p,unsigned int addr,unsigned char number)      
{
    start_IIC();
    send_char(0xa2);
    iic_ACK();
    send_char(addr/256);
    iic_ACK();
    send_char(addr%256);
    iic_ACK(); 
    start_IIC();
                 send_char(0xa3);
                 iic_ACK();
                   do
                    {
                        *p=read_char();
                        p++;
                       if(number!=1) 
                          S_ACK();        //send ACK
                    }
                    while(--number);
              iic_NACK();
    stop_IIC();
}

 

  數據的傳輸

  數據傳輸是存儲在EEPROM中的數據到達計算機的有效途徑,數據上傳到計算機最常用的是串行(RS232)接口,

 

現在由于USB計數的不斷成熟,通過USB可以方便快捷實現數據傳輸,而且可以滿足速率和設備外觀的要求,但是USB的驅動程序設計是比較復雜的工作,本例中使用簡單的橋接電路,把UART接口的數據經過CP2102的橋接,直接實現數據的USB轉換,從430F449異步串口輸出的數據自動轉化為符合USB協議的數據直接連接到計算機的USB口,上位機應用程序通過CP2102的驅動程序可以象操作串口一樣直接讀寫端口數據。

 

  結論

  以上的硬件設計比較簡單可靠,可以照搬到同類型的控制芯片上,軟件代碼也同樣具有較好的移植性,只要把控制時鐘和數據端口和程序軟件設置相一致即可。

  參考文獻:

  1、MSP430系列16位超低功耗單片機實踐與系統設計《清華大學出版社》

  2、MSP430系列單片機接口計數及系統設計實例《北京航天航空大學出版社》

  3、MSP430系列單片機C語言程序設計與開發《北京航天航空大學出版社》

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美刺激性大交免费视频| 免费成人网www| 日韩视频永久免费| 久久综合狠狠综合久久综青草| 国产精品视频免费| 国产欧美一区二区三区在线老狼| 欧美在线视频播放| 国产精品亚洲综合| 亚洲午夜av电影| 国产精品乱码妇女bbbb| 亚洲愉拍自拍另类高清精品| 亚洲精品国精品久久99热一| 久久手机精品视频| 亚洲欧美日韩国产综合| 亚洲综合色噜噜狠狠| 亚洲精选在线观看| 在线视频国内自拍亚洲视频| 欧美日韩精品免费观看视频| 久久精品视频亚洲| 欧美日韩免费观看一区=区三区| 欧美成人精品在线| 国产精品久久久久影院色老大| 欧美色图五月天| 欧美中文字幕视频在线观看| 国产伦精品一区二区三区照片91| 亚洲精品在线二区| 国产精品播放| 欧美伊人久久| 黑丝一区二区| 欧美日韩国产a| 加勒比av一区二区| 欧美精品国产精品| 国产精品一区二区三区四区五区| 久久xxxx精品视频| 欧美91福利在线观看| 欧美中文在线观看国产| 亚洲欧美资源在线| 怡红院精品视频在线观看极品| 亚洲免费大片| 一区二区高清视频在线观看| 国产精品免费在线| 亚洲精品乱码久久久久| 亚洲精品国偷自产在线99热| 99热精品在线观看| 久热精品视频| 欧美四级电影网站| 国产日韩在线亚洲字幕中文| 欧美激情视频在线播放| 国产精品一区免费观看| 国产日韩精品视频一区二区三区| 午夜视频在线观看一区| 亚洲欧洲日本专区| 久久躁日日躁aaaaxxxx| 欧美呦呦网站| 国产精品亚洲片夜色在线| 91久久香蕉国产日韩欧美9色| 国产精品午夜在线| 夜夜狂射影院欧美极品| 欧美精品18| 一区二区三区四区蜜桃| 亚洲日韩视频| 亚洲欧美中文在线视频| 一本高清dvd不卡在线观看| 久久久91精品国产一区二区精品| 欧美日韩国产在线播放| 亚洲六月丁香色婷婷综合久久| 免费观看在线综合色| 极品尤物一区二区三区| 麻豆91精品91久久久的内涵| 国产日韩欧美高清免费| 国产精品人人爽人人做我的可爱| 亚洲男同1069视频| 国产欧美日韩三区| 国产精品99久久99久久久二8| 国产精品不卡在线| 国产精品乱码一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 91久久在线视频| 亚洲日本电影在线| 欧美视频中文一区二区三区在线观看| 久久久久久久国产| 久久久久国产一区二区三区| 亚洲欧美三级在线| 日韩视频在线一区二区三区| 欧美日本在线播放| 欧美国产精品| 国产日韩欧美成人| 国产免费成人在线视频| 亚洲高清在线观看| 午夜精品久久久久久久久久久久久| 久久久久久久久久久成人| 亚洲人成人99网站| 亚洲与欧洲av电影| 亚洲欧美视频| 亚洲无线观看| 欧美日韩mv| 国产精品videossex久久发布| 国内成+人亚洲| 久久精品免视看| 亚洲最新中文字幕| 欧美精品性视频| 亚洲美女视频| 欧美精品久久一区| 伊人色综合久久天天| 亚洲人成网站999久久久综合| 亚洲观看高清完整版在线观看| 性视频1819p久久| 亚洲麻豆国产自偷在线| 欧美激情一区二区三区全黄| 国产九九视频一区二区三区| 小黄鸭视频精品导航| 午夜精品一区二区三区在线播放| 国产欧美日韩激情| 亚洲欧美日韩在线观看a三区| 韩国一区二区三区在线观看| 亚洲国产精品福利| 亚洲靠逼com| 亚洲午夜久久久久久尤物| 亚洲综合色丁香婷婷六月图片| 亚洲黄色一区二区三区| 欧美日韩精品一区二区天天拍小说| 裸体一区二区三区| 国产一本一道久久香蕉| 国产精品美女在线| 最近中文字幕日韩精品| 国产视频在线观看一区| 亚洲国产另类久久精品| 欧美午夜免费电影| 欧美伦理91| 亚洲小视频在线观看| 国产一区91| 久久国产视频网站| 欧美天天在线| 欧美亚洲午夜视频在线观看| 国产精品人成在线观看免费| 欧美一区二粉嫩精品国产一线天| 国产精品红桃| 亚洲天堂男人| 亚洲电影欧美电影有声小说| 一个色综合导航| 欧美一区亚洲二区| 欧美一区2区视频在线观看| 亚洲一级黄色av| 久久av在线| 一区二区冒白浆视频| 午夜精品亚洲| 亚洲美女啪啪| 欧美日韩在线播放一区| 在线免费观看欧美| 亚洲第一成人在线| 一区二区久久| 一本到高清视频免费精品| 国产一区免费视频| 午夜老司机精品| 亚洲国产精品一区在线观看不卡| 99在线|亚洲一区二区| 国产亚洲欧美一级| 午夜一区二区三视频在线观看| 一本大道av伊人久久综合| 欧美色精品在线视频| 在线欧美影院| 国产精品theporn| 久久久999精品免费| 国产精品丝袜xxxxxxx| 国产精品美女午夜av| 久久精品国产第一区二区三区| 欧美www视频在线观看| 欧美亚洲免费在线| 欧美小视频在线| 久久xxxx精品视频| 亚洲天堂成人在线观看| 亚洲自拍偷拍视频| 在线视频欧美精品| 欧美制服第一页| 亚洲另类春色国产| 国产精品美女黄网| 亚洲精品国精品久久99热| 欧美午夜精品伦理| 美女黄网久久| 欧美久久久久中文字幕| 精品999在线播放| 国产农村妇女精品一二区| 国外精品视频| 欧美一区二区视频在线观看| 欧美日韩中文字幕日韩欧美| 亚洲一区二区三区免费视频| 欧美午夜电影在线观看| 久久综合九色欧美综合狠狠| 欧美午夜片在线免费观看| 免费在线观看日韩欧美| 久久九九久精品国产免费直播| 午夜欧美理论片| 久久久99国产精品免费| 午夜国产精品影院在线观看| 美女999久久久精品视频| 亚洲韩国一区二区三区| 欧美日韩国产三区| 久久久精品免费视频| 国产精品二区在线观看| 欧美伊人久久久久久午夜久久久久| 欧美日韩免费看| 国产精品成人一区二区三区夜夜夜| 国内精品福利| 久久久欧美精品sm网站| 亚洲女爱视频在线| 欧美日韩成人综合在线一区二区| 久久国产一二区| 欧美精品在线观看| 国产一区二区日韩| 亚洲欧美影音先锋| 好吊妞这里只有精品| 欧美搞黄网站| 国内成人自拍视频| 99成人在线| 久久精品中文| 国产三级精品三级| 美日韩精品免费| 中国日韩欧美久久久久久久久| 欧美一区二区三区四区在线| 欧美日本韩国一区| 国产精品久久久久久妇女6080| 欧美屁股在线| 亚洲影视在线播放| 中文日韩在线视频| 久久国产加勒比精品无码| 亚洲精品永久免费| 在线欧美一区| 欧美久久久久久久久| 久久久亚洲综合| 欧美另类69精品久久久久9999| 欧美a级一区二区| 国产久一道中文一区| 性色av一区二区三区红粉影视| 亚洲午夜小视频| 欧美精品九九99久久| 一本久久a久久免费精品不卡| 欧美国产激情二区三区| 国产精品久久久久国产精品日日| 亚洲欧美日韩专区| 亚洲国产免费| 9色porny自拍视频一区二区| 亚洲国产成人久久综合一区| 欧美精品久久久久久久久老牛影院| 日韩视频在线一区| 亚洲片在线资源| 欧美一二三区在线观看| 欧美日韩国产片| 亚洲尤物影院| av成人免费在线| 红桃视频国产精品| 亚洲国产婷婷香蕉久久久久久99| 亚洲天堂久久| 亚洲一区国产| 欧美一级一区| 一本色道久久综合亚洲91| 在线日韩日本国产亚洲| 亚洲老板91色精品久久| 蜜桃视频一区| 亚洲图片欧洲图片日韩av| 久久精品中文字幕免费mv| 亚洲二区三区四区| 国产精品久久久久毛片软件| 国产日本欧美一区二区三区在线| 国产精品日韩在线| 激情视频一区| 夜久久久久久| 欧美福利在线| 国产亚洲一区在线播放| 国产日韩精品一区二区| 欧美一区二区高清在线观看| 久久国产一区二区三区| 国语自产在线不卡| 亚洲理论在线| 一色屋精品视频在线观看网站| 你懂的国产精品永久在线| 亚洲精品乱码久久久久| 一色屋精品视频免费看| 激情一区二区三区| 久久久久久久久岛国免费| 亚洲国产成人高清精品| 久久久www成人免费无遮挡大片| 美女在线一区二区| 亚洲日产国产精品| 欧美丰满少妇xxxbbb| 在线看欧美日韩| 欧美精品乱码久久久久久按摩| 狠狠色狠狠色综合日日91app| 欧美一级午夜免费电影| 久久一区二区三区四区五区| 欧美精品成人在线| 美女精品国产| 亚洲视频一区二区免费在线观看| 一区在线观看| 一本一道久久综合狠狠老精东影业| 国产女主播一区二区| 亚洲深夜福利在线| 亚洲二区三区四区| 欧美黄色小视频| 午夜精品福利电影| 韩日精品视频一区| 噜噜噜久久亚洲精品国产品小说| 国产精品自拍三区| 久久久五月天| 夜夜躁日日躁狠狠久久88av| 亚洲在线成人| 亚洲自拍都市欧美小说| 久久er精品视频| 在线观看成人av电影| 久久成人18免费网站| 麻豆精品视频在线观看| 欧美—级a级欧美特级ar全黄| 国产日韩欧美制服另类| 亚洲视频在线观看视频| 国产午夜亚洲精品不卡| 欧美在线中文字幕| 欧美视频久久| 欧美激情国产高清| 性色一区二区| 女人天堂亚洲aⅴ在线观看| 国产精品99久久久久久宅男| 亚洲国产91精品在线观看| 欧美在线啊v| 亚洲欧美bt| 国产精品视频一二三| 99re6热只有精品免费观看| 一区二区三区鲁丝不卡| 欧美一区二区三区的| 国产真实久久|