基于單片機(jī)的TMS320VC5402的HPI通信設(shè)計
3.2 單片機(jī)程序設(shè)計要點(diǎn)
上面講到,P3.5作為單片機(jī)的發(fā)送請求信號,當(dāng)無數(shù)據(jù)發(fā)送時為高電平,當(dāng)為低電平時則表示單片機(jī)想要發(fā)送數(shù)據(jù),向總線仲裁器申請使用總線,總線仲裁器判斷當(dāng)前誰可以使用總線,然后通過外中斷0中斷DSP處理器,同時通過口告知DSP當(dāng)前可以使用總線的單片機(jī),最終由DSP通過XF管腳集中控制單片機(jī)的總線使用權(quán)。單片機(jī)在獲取總線使用權(quán)并發(fā)送完數(shù)據(jù)后,向HPI的控制寄存器的DSPINT位寫1,用中斷通知DSP。在單片機(jī)需接收數(shù)據(jù)時,DSP首先設(shè)置XF腳,選擇由哪個單片機(jī)接收,然后設(shè)置腳為低,通過中斷告知單片機(jī)進(jìn)行接收。單片機(jī)從HPI口接收時也應(yīng)置P3.5為低,以便保持總線仲裁器的單片機(jī)選擇信號與XF腳一致。
在對單片機(jī)編程時需要注意以下幾點(diǎn):(1)由于兩個單片機(jī)共享總線,為保證相互之間不會干擾,沒有使用總線的單片機(jī)P1口必須處于高阻態(tài)。根據(jù)P1口的內(nèi)部結(jié)構(gòu),單片機(jī)不使用總線時,往P1口寫入0xFF即可達(dá)到這一目的。(2)由于P1口作為控制/數(shù)據(jù)信號復(fù)用口,故編程時,對每次HPI口操作,先在P1口送出控制信號,接著設(shè)置P1.0產(chǎn)生低→高的跳變,把控制HPI口的P1.1~P1.4信號鎖存到FPGA內(nèi)部的鎖存器,這時P1口才能作為數(shù)據(jù)端口,在P3.7產(chǎn)生一低跳變后,發(fā)起一次數(shù)據(jù)傳遞。(3)編程時,應(yīng)防止單片機(jī)被同時要求對HPI口進(jìn)行收、發(fā)操作。這可以依據(jù)實(shí)際情況,靈活地進(jìn)行處理,限于篇幅,不再贅述。
4總線仲裁器的設(shè)計
總線仲裁器的功能主要是根據(jù)單片機(jī)P3.5的總線請求信號,選擇當(dāng)前可以使用總線的單片機(jī),仲裁器的設(shè)計需做到單片機(jī)能夠公平競爭總線使用權(quán)。在兩個單片機(jī)競爭總線的情況下,用一個簡單的狀態(tài)機(jī)即可達(dá)到目的。狀態(tài)機(jī)state僅有兩個狀態(tài)S0和S1,P3.5為高電平時,不申請總線,狀態(tài)機(jī)保持原狀態(tài);P3.5為低電平時,則根據(jù)當(dāng)前請求總線的單片機(jī),狀態(tài)機(jī)轉(zhuǎn)換到相應(yīng)的狀態(tài)。如單片機(jī)同時申請使用總線,則保持當(dāng)前的狀態(tài)不變。下面給出狀態(tài)轉(zhuǎn)換表(S0表示選擇單片機(jī)1,S1表示選擇單片機(jī)2):
state, MCU1_P3.5, MCU2_P3.5 => state;
S0, 0, x => S0;
S0, 1, 0 => S1;
S0, 1, 1 => S0;
S1, x, 0 => S1;
S1, 0, 1 => S0;
S1, 1, 1 => S1;
當(dāng)狀態(tài)機(jī)有狀態(tài)變換時,用FPGA產(chǎn)生一個脈寬約為1μs的低電平脈沖。這一信號接DSP外中斷腳,用于中斷DSP,并且將狀態(tài)機(jī)的當(dāng)前狀態(tài)通過腳告知DSP,指明正在請求使用總線的單片機(jī)。
此外,如前所述,FPGA內(nèi)部還設(shè)置一鎖存器,由P1.0的高跳變將P1口送出的HPI口控制信號鎖存。至于控制的兩個P3.7信號,在FPGA內(nèi)部只需將兩信號相與即可。
4 單片機(jī)與微機(jī)串口的硬件連線
在IBM PC/XT微機(jī)系統(tǒng)中,其串口符合RS-232C接口標(biāo)準(zhǔn)。為提高抗干擾能力,RS-232C標(biāo)準(zhǔn)采用負(fù)邏輯,低電平在-5V~-15V之間(通常用-12V表示)為邏輯“1”,高電平在+5V~+15V之間(通常用+12V表示)為邏輯“0”。上述電平稱為EIA電平,它與TTL電平和CMOS電平不同。為了使AT89C2051能與微機(jī)進(jìn)行串行通信,可以利用MAX232完成RS-232C電平與TTL電平的相互轉(zhuǎn)換。
單片機(jī)程序在完成對串口的工作模式和波特率設(shè)置等初始化過程后,即可開始與串口通信。通信方式有查詢方式和中斷方式兩種。由于查詢方式需CPU不斷查詢標(biāo)志位,程序效率不高,故在單片機(jī)操作比較繁忙時通常采用中斷方式,具體的編程應(yīng)用這里不再介紹。
介紹了通過FPGA芯片作為總線仲裁器,實(shí)現(xiàn)微機(jī)雙串口各自通過AT89C2051與DSP HPI口通信的設(shè)計方法。該電路與采用專用芯片的電路相比,并不顯得復(fù)雜,比較實(shí)用。由于與DSP存儲器之間的數(shù)據(jù)交換完全由單片機(jī)發(fā)起,DSP就可以從數(shù)據(jù)的傳遞中解脫出來,去完成更復(fù)雜的控制和運(yùn)算。實(shí)踐證明,這一電路能很好地達(dá)到我們的設(shè)計要求,在異步數(shù)據(jù)傳輸速率為9600bps情況下,可以可靠地實(shí)現(xiàn)微機(jī)雙串口與DSP之間的通信。
參考文獻(xiàn):
[1].AT89C2051datasheethttp://www.dzsc.com/datasheet/AT89C2051_.html.
[2].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[3].TL16C550datasheethttp://www.dzsc.com/datasheet/TL16C550_.
[4].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[5].MAX232datasheethttp://www.dzsc.com/datasheet/MAX232_1074207.html.
評論