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