亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MSP430F449單片機(jī)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和通信系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:中科院上海技術(shù)物理研究 ? 作者:王海英 ? 2020-07-01 07:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在數(shù)據(jù)采集和測(cè)量?jī)x器尤其是便攜式設(shè)備中,數(shù)據(jù)存儲(chǔ)和傳輸是不可避免的問(wèn)題,近年來(lái)TI公司推出的低功耗微控制器MSP430,在儀器設(shè)計(jì)和制造領(lǐng)域引起巨大變革,新型控制器和大容量串行存儲(chǔ)器的應(yīng)用大大提高產(chǎn)品了的性能。本文主要解決兩個(gè)問(wèn)題

1、解決經(jīng)過(guò)MSP430采集后的數(shù)據(jù)與EEPROM24C256的數(shù)據(jù)接口問(wèn)題,也就是數(shù)據(jù)存儲(chǔ)問(wèn)題;

2、解決EEPROM與上位機(jī)(普通微機(jī))的數(shù)據(jù)通信問(wèn)題,也就是存儲(chǔ)后的數(shù)據(jù)上傳問(wèn)題。

首先對(duì)主要的集成電路做簡(jiǎn)單介紹

MSP430F449簡(jiǎn)介

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

24C256簡(jiǎn)介

24C256是支持I2C協(xié)議的串行EEPROM,容量32768字節(jié)。

基于MSP430F449單片機(jī)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和通信系統(tǒng)的設(shè)計(jì)

以上是24C256的管腳圖,其中A0,A1,A2構(gòu)成存儲(chǔ)器的物理地址,作為I2C總線(xiàn)上區(qū)分不同存儲(chǔ)器的控制地址,可以在I2C總線(xiàn)上同時(shí)連接8個(gè)設(shè)備。 WP是寫(xiě)保護(hù),高電平將禁止對(duì)器件的寫(xiě)操作;SCL和SDA是數(shù)據(jù)傳輸?shù)目刂凭€(xiàn),其中SCL是時(shí)鐘,SDA是雙向數(shù)據(jù)線(xiàn),用來(lái)完成數(shù)據(jù)的寫(xiě)入和讀出,數(shù)據(jù)的傳輸按照I2C協(xié)議的要求由時(shí)鐘端SCL配合共同完成。

CP2102簡(jiǎn)介

CP2102是USBUART的橋接電路,完成USB數(shù)據(jù)和UART數(shù)據(jù)的轉(zhuǎn)換,電路連接簡(jiǎn)單,數(shù)據(jù)傳輸可靠,把下位機(jī)串行數(shù)據(jù)轉(zhuǎn)換成USB數(shù)據(jù)格式,方便實(shí)現(xiàn)數(shù)據(jù)通信,在上位機(jī)上通過(guò)運(yùn)行該芯片的驅(qū)動(dòng)程序把USB數(shù)據(jù)可以按照簡(jiǎn)單的串口進(jìn)行讀寫(xiě)操作編程簡(jiǎn)單,操作靈活。

圖1 MSP430F449 接口原理圖

以上是MSP430F449與EEPROM以及CP2102的接口原理圖,本文重點(diǎn)在于介紹數(shù)據(jù)采集過(guò)程完成以后的數(shù)據(jù)存貯和數(shù)據(jù)傳輸。

數(shù)據(jù)的采集多種多樣,可以經(jīng)過(guò)片內(nèi)的ADC轉(zhuǎn)換器對(duì)模擬量進(jìn)行采集,也可以通過(guò)獨(dú)立的端口控制線(xiàn)對(duì)特殊的傳感器比如溫度傳感器、壓力傳感器等進(jìn)行數(shù)據(jù)轉(zhuǎn)換,這不作為本文介紹的內(nèi)容。本文主要是針對(duì)不同的采集過(guò)程完成后數(shù)據(jù)的存儲(chǔ)和傳輸處理。

數(shù)據(jù)自動(dòng)存儲(chǔ)的客觀要求

在許多測(cè)量過(guò)程中,不僅要求讀取簡(jiǎn)單的儀表值,而且還需要對(duì)一段時(shí)間的數(shù)據(jù)進(jìn)行科學(xué)的分析和處理以取得預(yù)測(cè)和分析的目的。在這種情況下,可能要求測(cè)量時(shí)間長(zhǎng),采集要求自動(dòng)進(jìn)行,無(wú)需人工值守,所以數(shù)據(jù)必須自動(dòng)存儲(chǔ);另一個(gè)原因,采集數(shù)據(jù)的頻率比較高,人的觀察不能滿(mǎn)足實(shí)際需要,這就要求對(duì)采集的數(shù)據(jù)進(jìn)行有效的存儲(chǔ)。

集成電路合理選擇

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

24C256程序控制原理

24C256是具有I2C接口的512x64存儲(chǔ)器,在數(shù)據(jù)的存儲(chǔ)過(guò)程中除了遵循I2C協(xié)議必須的邏輯以外,一個(gè)最容易忽視并且最容易導(dǎo)致出錯(cuò)的問(wèn)題就是存儲(chǔ)地址問(wèn)題。

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

原因是什么呢? 24C256支持?jǐn)?shù)據(jù)的連續(xù)存儲(chǔ),最大的存貯數(shù)量是64即一頁(yè)的內(nèi)容,如果在地址選擇上超過(guò)了這個(gè)限制,數(shù)據(jù)將會(huì)覆蓋本頁(yè)開(kāi)始的位置重新存儲(chǔ),這就造成數(shù)據(jù)的錯(cuò)誤,在使用上,雖然數(shù)據(jù)是分頁(yè)存儲(chǔ)的,但在形式上是連續(xù)數(shù)據(jù),所以存儲(chǔ)中不需要特意區(qū)分頁(yè)地址和頁(yè)內(nèi)地址。

在連續(xù)存儲(chǔ)中,盡管數(shù)據(jù)每次存儲(chǔ)的數(shù)量小于64,數(shù)據(jù)也可能出錯(cuò),例如每次存儲(chǔ)數(shù)量為11,地址的變化是0,11,22,33,44,55,66……,看上去沒(méi)有什么問(wèn)題,地址是按照每次11遞增的,然而存儲(chǔ)的結(jié)果還是出錯(cuò)了,原因是什么呢?在地址55開(kāi)始的空間無(wú)法提供連續(xù)11個(gè)頁(yè)內(nèi)存儲(chǔ)空間,當(dāng)?shù)刂吩黾拥?3以后數(shù)據(jù)又從該頁(yè)0地址重新開(kāi)始,從而導(dǎo)致數(shù)據(jù)儲(chǔ)存的錯(cuò)誤。有效的解決辦法是如果使用連續(xù)存儲(chǔ)模式,地址的安排上要使存儲(chǔ)塊的大小為64,32,16,8,4,2此外都不能使用連續(xù)地址存儲(chǔ)。如果數(shù)據(jù)采集中的有效數(shù)據(jù)位小于64,比如每次采集的結(jié)果是30字節(jié),在連續(xù)存儲(chǔ)模式下要按照32為單位存儲(chǔ),不足的字節(jié)補(bǔ)零處理。

以下是24C256數(shù)據(jù)傳輸基本控制模塊

延時(shí)處理模塊

void IIC_Delay(void)

{

_NOP();

_NOP();

_NOP();

}

? 啟動(dòng)I2C模塊

void start_IIC(void) // 啟動(dòng)I2

{

P2OUT&=0xf9; //設(shè)置P2輸出

P2DIR&=0XFD; //SDA=1, 上拉電阻使得P2.1為H,F(xiàn)D=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,F(xiàn)D=1111,1101

IIC_Delay();

P2DIR|=0X04;// SCL=0

}

? 發(fā)送 “ 0”模塊

void send_zero(void) //

{

P2DIR|=0X02;// SDA=0

IIC_Delay();

P2DIR&=0XFB;//SCL=1 FB=1111,1011

IIC_Delay();

P2DIR|=0X04;// SCL=0

}

? 發(fā)送 1模塊

void send_one(void) //

{

P2DIR&=0XFD;//SDA=1, 上拉電阻使得P2.1為H,F(xiàn)D=1111,1101

IIC_Delay();

P2DIR&=0XFB;//SCL=1 FB=1111,1011

IIC_Delay();

P2DIR|=0X04;// SCL=0

}

? 發(fā)送單字符數(shù)據(jù)

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;

}

}

? 讀單字符數(shù)據(jù)

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;

}

? 檢查應(yīng)答信號(hào)模塊

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]

? 拒絕應(yīng)答模塊

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();//

}

? 寫(xiě)連續(xù)數(shù)據(jù)模塊

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);

}

? 發(fā)送應(yīng)答模塊: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();

}

? 連續(xù)讀字符模塊

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();

}

數(shù)據(jù)的傳輸

數(shù)據(jù)傳輸是存儲(chǔ)在EEPROM中的數(shù)據(jù)到達(dá)計(jì)算機(jī)的有效途徑,數(shù)據(jù)上傳到計(jì)算機(jī)最常用的是串行(RS232)接口,現(xiàn)在由于USB計(jì)數(shù)的不斷成熟,通過(guò)USB可以方便快捷實(shí)現(xiàn)數(shù)據(jù)傳輸,而且可以滿(mǎn)足速率和設(shè)備外觀的要求,但是USB的驅(qū)動(dòng)程序設(shè)計(jì)是比較復(fù)雜的工作,本例中使用簡(jiǎn)單的橋接電路,把UART接口的數(shù)據(jù)經(jīng)過(guò)CP2102的橋接,直接實(shí)現(xiàn)數(shù)據(jù)的USB轉(zhuǎn)換,從430F449異步串口輸出的數(shù)據(jù)自動(dòng)轉(zhuǎn)化為符合USB協(xié)議的數(shù)據(jù)直接連接到計(jì)算機(jī)的USB口,上位機(jī)應(yīng)用程序通過(guò)CP2102的驅(qū)動(dòng)程序可以象操作串口一樣直接讀寫(xiě)端口數(shù)據(jù)。

結(jié)論

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

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    8222

    瀏覽量

    161143
  • 芯片
    +關(guān)注

    關(guān)注

    462

    文章

    53353

    瀏覽量

    456582
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6072

    文章

    45281

    瀏覽量

    661830
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MSP430F449如何實(shí)現(xiàn)串口通信的接收數(shù)據(jù)?急求程序?。?!

    MSP430F449如何實(shí)現(xiàn)串口通信的接收數(shù)據(jù)?急求程序?。?!
    發(fā)表于 08-03 16:07

    實(shí)現(xiàn)MSP430F449的一鍵下載

    如何實(shí)現(xiàn)MSP430F449的一鍵下載?之前用過(guò)MSP430F149 借助于PL2303HX來(lái)實(shí)現(xiàn)一鍵下載功能現(xiàn)在想用CH340G來(lái)實(shí)現(xiàn)一鍵
    發(fā)表于 06-29 18:30

    基于MSP430F449單片機(jī)和M-BUS總線(xiàn)實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案

    基于MSP430F449單片機(jī)和M-BUS總線(xiàn)實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
    發(fā)表于 01-04 07:57

    MSP430F449在超低功耗高精度雷達(dá)液位儀中的應(yīng)用

    MSP430F449在超低功耗高精度雷達(dá)液位儀中的應(yīng)用 MSP430F449系列是TI公司的超低功耗單片機(jī)系列產(chǎn)品。
    發(fā)表于 03-22 11:33 ?41次下載

    基于MSP430F449的懸掛運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)

    以低功耗 MSP430F449 單片機(jī)系統(tǒng)平臺(tái)為控制核心,由步進(jìn)電機(jī)控制模塊、紅外傳感和人機(jī)交互3個(gè)功能部分組成。由MSP430F449實(shí)現(xiàn)
    發(fā)表于 06-08 16:17 ?63次下載
    基于<b class='flag-5'>MSP430F449</b>的懸掛運(yùn)動(dòng)控制<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    基于單片機(jī)MSP430F449的寬帶直流放大器設(shè)計(jì)

    利用單片機(jī)MSP430F449設(shè)計(jì)寬帶直流放大器。采用單片機(jī)MSP430F449作為寬帶直流放大器的控制芯片,利用三級(jí)放大器級(jí)聯(lián)的形式實(shí)現(xiàn)對(duì)
    發(fā)表于 07-24 15:26 ?62次下載
    基于<b class='flag-5'>單片機(jī)</b><b class='flag-5'>MSP430F449</b>的寬帶直流放大器設(shè)計(jì)

    MSP430F449在微型化低功耗數(shù)據(jù)采集模塊中的應(yīng)用

    MSP430F449在微型化低功耗數(shù)據(jù)采集模塊中的應(yīng)用。
    發(fā)表于 02-17 09:45 ?5次下載

    基于MSP430F449單片機(jī)的USB通用串行總線(xiàn)設(shè)計(jì)

    基于MSP430F449單片機(jī)的USB通用串行總線(xiàn)設(shè)計(jì)。
    發(fā)表于 02-17 09:56 ?6次下載

    基于MSP430F449單片機(jī)的超溫報(bào)警系統(tǒng)

    基于MSP430F449單片機(jī)的超溫報(bào)警系統(tǒng)
    發(fā)表于 02-17 09:56 ?10次下載

    基于MSP430F449單片機(jī)數(shù)據(jù)采集實(shí)驗(yàn)設(shè)計(jì)

    基于MSP430F449單片機(jī)數(shù)據(jù)采集實(shí)驗(yàn)設(shè)計(jì)
    發(fā)表于 02-17 09:56 ?8次下載

    基于MSP430F449的電話(huà)音識(shí)別及數(shù)據(jù)/語(yǔ)音報(bào)警監(jiān)控系統(tǒng)

    基于MSP430F449的電話(huà)音識(shí)別及數(shù)據(jù)/語(yǔ)音報(bào)警監(jiān)控系統(tǒng)
    發(fā)表于 02-17 09:55 ?15次下載

    MSP430F449設(shè)計(jì)的開(kāi)發(fā)板程序

    MSP430F449設(shè)計(jì)的開(kāi)發(fā)板程序,下來(lái)看看
    發(fā)表于 05-25 10:51 ?64次下載

    基于高性能、低功耗16 位單片機(jī)MSP430F449 設(shè)計(jì)的電導(dǎo)率檢測(cè)裝置的測(cè)量原理

    基于高性能、低功耗16 位單片機(jī)MSP430F449 設(shè)計(jì)的電導(dǎo)率檢測(cè)裝置的測(cè)量原理
    發(fā)表于 10-13 08:39 ?12次下載
    基于高性能、低功耗16 位<b class='flag-5'>單片機(jī)</b><b class='flag-5'>MSP430F449</b> 設(shè)計(jì)的電導(dǎo)率檢測(cè)裝置的測(cè)量原理

    MSP430單片機(jī)的風(fēng)力數(shù)據(jù)采集系統(tǒng)詳析

    2 個(gè)單片機(jī)協(xié)同工作 從機(jī) MSP430F149 負(fù)責(zé)數(shù)據(jù)采集、計(jì)算與分析 主機(jī)MSP430F449 負(fù)責(zé)
    發(fā)表于 04-19 09:03 ?2次下載
    雙<b class='flag-5'>MSP430</b><b class='flag-5'>單片機(jī)</b>的風(fēng)力<b class='flag-5'>數(shù)據(jù)</b>采集<b class='flag-5'>系統(tǒng)</b>詳析

    基于單片機(jī)MSP430F449的寬帶直流放大器設(shè)計(jì)---王鵬云

    ,利用三級(jí)放大器級(jí)聯(lián)的形式實(shí)現(xiàn)對(duì)輸入小信號(hào)的放大。其中MSP430F449單片機(jī)來(lái)控制雙路數(shù)模轉(zhuǎn)換器TLV5638實(shí)現(xiàn)AD603的程控增益調(diào)節(jié)和整體后級(jí)放大模塊引入的直流的軟件補(bǔ)償,并
    發(fā)表于 09-18 14:02 ?2次下載
    基于<b class='flag-5'>單片機(jī)</b><b class='flag-5'>MSP430F449</b>的寬帶直流放大器設(shè)計(jì)---王鵬云