在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于MSP430F449單片機實現數據存儲和通信系統的設計

電子設計 ? 來源:中科院上海技術物理研究 ? 作者:王海英 ? 2020-07-01 07:50 ? 次閱讀

在數據采集和測量儀器尤其是便攜式設備中,數據存儲和傳輸是不可避免的問題,近年來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字節。

基于MSP430F449單片機實現數據存儲和通信系統的設計

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

CP2102簡介

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

圖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

}[page]

? 停止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();

}[page]

? 拒絕應答模塊

void iic_NACK(void) {

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的驅動程序可以象操作串口一樣直接讀寫端口數據。

結論

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

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7668

    瀏覽量

    152219
  • 芯片
    +關注

    關注

    457

    文章

    51337

    瀏覽量

    428075
  • 單片機
    +關注

    關注

    6044

    文章

    44632

    瀏覽量

    639208
收藏 人收藏

    評論

    相關推薦

    MSP430F449如何實現串口通信的接收數據?急求程序!!!

    MSP430F449如何實現串口通信的接收數據?急求程序!!!
    發表于 08-03 16:07

    實現MSP430F449的一鍵下載

    如何實現MSP430F449的一鍵下載?之前用過MSP430F149 借助于PL2303HX來實現一鍵下載功能現在想用CH340G來實現一鍵
    發表于 06-29 18:30

    基于MSP430F449單片機和M-BUS總線實現數據采集系統的設計方案

    基于MSP430F449單片機和M-BUS總線實現數據采集系統的設計
    發表于 01-04 07:57

    MSP430F449在超低功耗高精度雷達液位儀中的應用

    MSP430F449在超低功耗高精度雷達液位儀中的應用 MSP430F449系列是TI公司的超低功耗單片機系列產品。
    發表于 03-22 11:33 ?41次下載

    基于MSP430F449的懸掛運動控制系統設計

    以低功耗 MSP430F449 單片機系統平臺為控制核心,由步進電機控制模塊、紅外傳感和人機交互3個功能部分組成。由MSP430F449實現
    發表于 06-08 16:17 ?63次下載
    基于<b class='flag-5'>MSP430F449</b>的懸掛運動控制<b class='flag-5'>系統</b>設計

    基于單片機MSP430F449的寬帶直流放大器設計

    利用單片機MSP430F449設計寬帶直流放大器。采用單片機MSP430F449作為寬帶直流放大器的控制芯片,利用三級放大器級聯的形式實現
    發表于 07-24 15:26 ?62次下載
    基于<b class='flag-5'>單片機</b><b class='flag-5'>MSP430F449</b>的寬帶直流放大器設計

    MSP430F449在微型化低功耗數據采集模塊中的應用

    MSP430F449在微型化低功耗數據采集模塊中的應用。
    發表于 02-17 09:45 ?5次下載

    基于MSP430F449單片機的USB通用串行總線設計

    基于MSP430F449單片機的USB通用串行總線設計。
    發表于 02-17 09:56 ?6次下載

    基于MSP430F449單片機的超溫報警系統

    基于MSP430F449單片機的超溫報警系統
    發表于 02-17 09:56 ?10次下載

    基于MSP430F449單片機數據采集實驗設計

    基于MSP430F449單片機數據采集實驗設計
    發表于 02-17 09:56 ?8次下載

    基于MSP430F449的電話音識別及數據/語音報警監控系統

    基于MSP430F449的電話音識別及數據/語音報警監控系統
    發表于 02-17 09:55 ?15次下載

    MSP430F449設計的開發板程序

    MSP430F449設計的開發板程序,下來看看
    發表于 05-25 10:51 ?62次下載

    基于高性能、低功耗16 位單片機MSP430F449 設計的電導率檢測裝置的測量原理

    基于高性能、低功耗16 位單片機MSP430F449 設計的電導率檢測裝置的測量原理
    發表于 10-13 08:39 ?12次下載
    基于高性能、低功耗16 位<b class='flag-5'>單片機</b><b class='flag-5'>MSP430F449</b> 設計的電導率檢測裝置的測量原理

    MSP430單片機的風力數據采集系統詳析

    2 個單片機協同工作 從 MSP430F149 負責數據采集、計算與分析 主機MSP430F449 負責
    發表于 04-19 09:03 ?2次下載
    雙<b class='flag-5'>MSP430</b><b class='flag-5'>單片機</b>的風力<b class='flag-5'>數據</b>采集<b class='flag-5'>系統</b>詳析

    基于單片機MSP430F449的寬帶直流放大器設計---王鵬云

    ,利用三級放大器級聯的形式實現對輸入小信號的放大。其中MSP430F449單片機來控制雙路數模轉換器TLV5638實現AD603的程控增益調節和整體后級放大模塊引入的直流的軟件補償,并
    發表于 09-18 14:02 ?2次下載
    基于<b class='flag-5'>單片機</b><b class='flag-5'>MSP430F449</b>的寬帶直流放大器設計---王鵬云
    主站蜘蛛池模板: 国产亚洲美女精品久久久久狼 | 日本在线一级 | 69xxxxx日本护士| 色五月视频 | 国产福利资源在线 | aa亚洲| 日韩免费视频一区 | 操操久久 | 欧美女同在线观看 | 日本久久久 | 一区二区三区精品国产欧美 | 一级毛片免费全部播放 | 2021色噜噜狠狠综曰曰曰 | 久久这里只有精品免费播放 | 国产大乳喷奶水在线看 | 你懂的在线免费视频 | 日本www网站 | 清朝荒淫牲艳史在线播放 | 在线观看亚洲一区 | 毛片视频免费网站 | 免费性视频 | 一区三区三区不卡 | 亚洲精品资源 | avbobo在线观看 | 免费高清在线观看a网站 | 国产永久视频夜色资源网 | 日本特黄绿像大片免费看 | 成人网在线观看 | 综合第一页 | 成人种子 | 免费看的黄视频 | 韩国中文字幕在线观看 | 国产精品九九久久一区hh | 成年香蕉大黄美女美女 | 久久综合九色综合欧洲色 | 久久6免费视频 | 天天插在线视频 | 欧美黑人巨大xxxx猛交 | 午夜色a大片在线观看免费 午夜色大片在线观看 | 一级特黄a 大片免费 | 日本不卡高清免费 |