基于Lab Windows/CVI的PC與 DSP的串行通信
2.3 下位機(jī)DSP程序
DSP的軟件開(kāi)發(fā)可利用集成開(kāi)發(fā)環(huán)境CCS3.1(Code Composer Studio),并采用C語(yǔ)言進(jìn)行編程。利用DSP的SCI模塊實(shí)現(xiàn)串行通信的主程序流程圖如圖4所示。DSP的串行通信程序設(shè)計(jì)可采用查詢(xún)法或中斷法來(lái)進(jìn)行數(shù)據(jù)的收發(fā),這里采用中斷方式接收數(shù)據(jù),而用查詢(xún)方式發(fā)送數(shù)據(jù)。DSP收到PC機(jī)發(fā)送來(lái)的數(shù)據(jù)時(shí),便轉(zhuǎn)入相應(yīng)的中斷子程序,其中斷服務(wù)子程序流程如圖5所示。其串口SCI初始化配置如下:
void SCI_Init(void)
{
SciaRegs.SCICCR.a(chǎn)ll=0x0007;//字符長(zhǎng)度8位
SciaRegs.SCICTL1.a(chǎn)ll=0x0003;//使能發(fā)送和接收
SciaRegs.SCICTL2.a(chǎn)ll=0x0002; //使能接收中斷,禁止發(fā)送中斷
SciaRegs.SCIHBAUD=0x00;//置波特率高8位
SciaRegs.SCIHBAUD=0xF3;//置波特率低8位
SciaRegs.SCICTL1.a(chǎn)ll=0x23;//使SCI退出復(fù)位
}
DSP收到字符串”~010105F0019D”之后,首先進(jìn)行和校驗(yàn)。如果正確,則根據(jù)功能碼和參數(shù)碼判斷PC機(jī)發(fā)送的是否是修改參數(shù)P的命令。然后提取數(shù)據(jù)”05F0'’,將其轉(zhuǎn)換為十進(jìn)制數(shù)1520,再除以100即得到要設(shè)置的P值15.20;如果和校驗(yàn)出錯(cuò),則要求主機(jī)重發(fā)。若PC機(jī)發(fā)送的是上傳數(shù)據(jù)的命令,則將發(fā)送標(biāo)志變量send_flag置1,這樣,在主循環(huán)中,經(jīng)過(guò)判斷后,便可向PC機(jī)發(fā)送數(shù)據(jù)。
3 結(jié)束語(yǔ)
本文利用LabWindows/CVI開(kāi)發(fā)平臺(tái)編寫(xiě)了上位機(jī)PC程序,同時(shí)利用CCS3.1開(kāi)發(fā)環(huán)境編寫(xiě)下位機(jī)DSP程序,然后通過(guò)RS232總線(xiàn)進(jìn)行串行通信。利用這種方法設(shè)計(jì)的PC機(jī)與DSP的串行通信系統(tǒng)具有硬件結(jié)構(gòu)簡(jiǎn)單、成本低、實(shí)現(xiàn)容易等特點(diǎn),并具有良好的可移植性和可擴(kuò)展性,能夠很好地滿(mǎn)足PC與DSP的通信需求。
評(píng)論