標(biāo)題: PDIUSBD12的時序圖的相關(guān)分析與說明 [打印本頁]

作者: 51黑er    時間: 2015-11-10 01:38
標(biāo)題: PDIUSBD12的時序圖的相關(guān)分析與說明
以下的僅是D12相關(guān)時序的操作:
時序圖如下:

說明:
圖中,CS_N為片選信號,此處的意思為當(dāng)屁安訊信號為低時,下面的操作才有意義。由于板子上直接將CS_N固定接地,所以其一直保持為低電平,因此程序不用管CS_N。
A0為地址線,用于選擇是出傳輸?shù)刂愤€是傳輸數(shù)據(jù),
A0為1時,表示操作的是命令
A0為0時,表示操作的是數(shù)據(jù)
WR_N是寫信號,,表示W(wǎng)R_N的上升沿將數(shù)據(jù)寫入到芯片中。數(shù)據(jù)必須在上升沿前后穩(wěn)定的保持一段時間才能可靠的寫入。


我們模擬出來的時序必須要滿足這些條件才能正確的操作硬件

RD_N是讀選通信號,在讀數(shù)據(jù)時,需要先將RD_N置低,等待一段時間后,數(shù)據(jù)將出現(xiàn)自數(shù)據(jù)總線DATA【7..0】上,這是可以讀取數(shù)據(jù),讀取完畢后,將RD_N置高,數(shù)據(jù)總線上的數(shù)據(jù)將在一定時間后消失。

有以上分析得出
寫命令的操作為
現(xiàn)將A0置高(即設(shè)置為命令狀態(tài)),再將WR_N置低,把需要發(fā)動送的命令放在數(shù)據(jù)總線上,再講WR_N置高,這樣,場上一個上升沿,從而把數(shù)據(jù)寫入到D12中。寫完命令后,需將總線設(shè)置為輸入狀態(tài)避免沖突!
寫數(shù)據(jù)的操作位:
現(xiàn)將A0置低(即設(shè)置為數(shù)據(jù)狀態(tài)),再將WR_N置低,把需要發(fā)動送的命令放在數(shù)據(jù)總線上,再講WR_N置高,這樣,場上一個上升沿,從而把數(shù)據(jù)寫入到D12中。寫完命令后,需將總線設(shè)置為輸入狀態(tài)避免沖突!

最終的寫命令函數(shù)代碼如下:
void D12WriteCommand(uint8 command)
{
   D12SetCommandAddr();     //設(shè)置為命令地址
   D12ClrWr();                     //WR置低
   D12SetPortOut();               //將數(shù)據(jù)口設(shè)置為輸出狀態(tài)
   D12SetData(command);     //輸出命令到數(shù)據(jù)口上
   D12SetWr();                     //WR置高
   D12SetPortIn();                //將數(shù)據(jù)口設(shè)置為輸入狀態(tài),   以備以后使用
}

讀數(shù)據(jù)函數(shù)代碼如下:
uint8 D12ReadByte(void)
{
    uint8temp;           
   D12SerDataAddr();     //設(shè)置為數(shù)據(jù)地址
   D12ClrRD();              //RD置低
   trmp=D12GetData();   //讀回數(shù)據(jù)
   D12SetRD();             //RD置高
    returntemp;             //返回讀到的數(shù)據(jù)
}

通過上面可知,已經(jīng)有讀和寫的代碼。,這樣就可以讀取D12的ID號了
D12的ID號的讀取命令為0XFD,可定義宏:#define Read_ID 0XFD,在程序中直接食用即可
程序代碼如下:
uin16 D12ReadID(void)
{
    uint16id;
   D12WriteCommand(Read_ID);        //寫ID命令
   id=D12ReadByte();                       //讀回ID號低字節(jié)
   id|=((uint16)D12ReadByte())<<8;    //讀回ID號高字節(jié)
    returnid;
}

最后,需要驗(yàn)證一下ID號是否正確,讀取并顯示代碼如下
id=D12ReadID();
printf("you D12 Chip's ID is:  ");
if(id==0X1012)
{
    printf("IDis correct! Congratulations!");
}
else
{
    printf("IDis incorrect! What apity!!");   
}
到此為止,本文主要是想說一下D12的時序問題,后面的相關(guān)知識在驗(yàn)證前面時序是否正確��!其中相關(guān)圖片截于圈圈





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1