HPI在MCU和DSP接口中的應用
a) 首先初始化HP IC 寄存器,特別是BOB 位。具體方法為:先設置HCNTL1 =HCNTL0 = 0,選擇將要對HP IC進(jìn)行操作。然后將HP IC的值寫(xiě)入HP I。注意HP IC的高8位和低8位是一樣的。
b) 設置地址寄存器HP IA。先設置HCNTL1 =1HCNTL0 = 0,選擇將要對HP IA進(jìn)行操作。然后將要訪(fǎng)問(wèn)的C54x片內RAM的地址寫(xiě)入HP I,高8位先寫(xiě),低8位后寫(xiě)。
c) 讀寫(xiě)C54x的片內RAM。先設置HCNTL1 /0,選擇將要對數據鎖存器HP ID 進(jìn)行操作。如果設置HCNTL1 = 0HCNTL0 = 1,表示使用地址自動(dòng)增加模式;如果設置HCNTL0 = HCNTL1 = 1 時(shí),表示不使用地址自動(dòng)增加模式,這時(shí)完成讀寫(xiě)操作后,地址寄存器HP IA將不會(huì )變。
以下是C8051F060的HP I接口程序:
(1) 讀HPID寄存器程序
unsigned int HP ID_Read ( )
{
unsigned char H_Byte,L_Byte;
HDS2 = 1;
HCS = 0; 使能HP I
HCNTL0 = 1;
HCNTL1 = 0; 主機可讀寫(xiě)HPID
HB IL = 0; 當前是第一字節
HRW = 1; 主機要求讀選通HPI
HDS1 = 0; 開(kāi)始數據操作
H_Byte = P1; 讀出高8位數據
Delay(2) ; 等待數據讀出完成
HDS1 = 1; 結束數據操作
HB IL = 1; 當前是第二字節
HRW = 1; 主機要求讀選通HPI
HDS1 = 0; 開(kāi)始數據操作
L_Byte = P1; 讀出低8位數據
Delay(2) ; 等待數據讀出完成
HDS1 = 1; 結束數據操作
}
(2) 寫(xiě)HPID寄存器程序
void HPID_Write ( unsigned intW_data)
{
HDS2 = 1;
HCS = 0; 使能HP I
HCNTL0 = 1;
HCNTL1 = 0; 主機可讀寫(xiě)HPID
HB IL = 0; 當前是第一字節
HRW = 0; 主機要求寫(xiě)選通HPI
HDS1 = 0; 開(kāi)始數據操作
P1 = ( unsigned char) ( (W_data > > 8) 0xFF) ; 寫(xiě)入高8位數據
Delay(2) ; 等待數據寫(xiě)入完成
HDS1 = 1; 結束數據操作
HB IL = 1; 當前是第二字節
HRW = 0; 主機要求寫(xiě)選通HPI
HDS1 = 0; 開(kāi)始數據操作
P1 = ( unsigned char) (W_data0xFF) ; 寫(xiě)入低8位數據
Delay(2) ; 等待數據寫(xiě)入完成
HDS1 = 1; 結束數據操作
}
3 結束語(yǔ)
本設計方案具有硬件結構簡(jiǎn)單、使用方便等優(yōu)點(diǎn),有很好的使用價(jià)值。經(jīng)在某導航系統中實(shí)際使用的效果來(lái)看,證明該設計方案簡(jiǎn)單、性能穩定、高效可靠,達到了預期的設計目的。
評論