ARM處理器設(shè)計(jì)的電機(jī)電物理量采集系統(tǒng)
1)AD數(shù)據(jù)采集.A/D轉(zhuǎn)換的數(shù)據(jù)可以通過(guò)中斷或查詢的方式來(lái)訪問(wèn),如果是用中斷方式,全部的轉(zhuǎn)換時(shí)間(從A/D轉(zhuǎn)換的開(kāi)始到數(shù)據(jù)讀出)要更長(zhǎng),因?yàn)橹袛喾?wù)程序返回和數(shù)據(jù)的訪問(wèn)的原因,所以采用查詢方式不斷檢測(cè)ADCCONt3j(轉(zhuǎn)換結(jié)束標(biāo)志位)來(lái)確定從ADCDAT寄存器讀取的數(shù)據(jù)是否是最新的轉(zhuǎn)換數(shù)據(jù).
主要代碼有:
#define PRSCVL(206)
#define ADCCON
_
ENABLE_ START(Ox1)
#define STDBM (0x02)
#define PRSCEN(0xll41
void init
_ ADdevice0 //AD設(shè)備初始化
{
rADCCON=(PRSCVLlADCCON_ENABLE_STARTISTDBMIPRSCEN);
)
int GetADresuh(int channe1)
{
rADCCON=ADCCON
— ENABLE— START—BYREADI(channel3)IPRSCENIPRSCVL;
while(!frADCCONADCCON—FLAG)); //AD轉(zhuǎn)換結(jié)束
return f0x3ffrADCDATO); //返回采樣值
}
2)數(shù)據(jù)發(fā)送.異步串行方式是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位(例如先低位、后高位)地傳送.?dāng)?shù)據(jù)的各不同位可以分時(shí)使用同一傳輸通道,因此串行I/O 可以減少信號(hào)連線,最少用一對(duì)線即可進(jìn)行.接收方對(duì)于同一根線上一連串的數(shù)字信號(hào),首先要分割成位,再按位組成字符.為了恢復(fù)發(fā)送的信息,雙方必須協(xié)調(diào)工作.在微型計(jì)算機(jī)中大量使用異步串行I/O 方式,雙方使用各自的時(shí)鐘信號(hào),而且允許時(shí)鐘頻率有一定誤差。因此實(shí)現(xiàn)較容易.主要代碼有:
int Uart_
Init(int whichUart,int baud)
{
if(whichUaxt>=NumberOfUartDrv)
return FALSE;
return serial_
drv[whichUart]->init(baud);
}
int Uart_ SendByte(int whichUart,int data)
{
if(whichUart>=NumberOfUartDrv)
return FALS E;
return serial— .drv[whichUart]->write(data);
評(píng)論