全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2539
推到 Plurk!
推到 Facebook!

請教一個GPIO抓取資料的觀念性問題!!由ARM控制!!

缺席
Tommy0325
一般會員


發表:5
回覆:4
積分:1
註冊:2007-05-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-22 04:13:42 IP:140.126.xxx.xxx 訂閱
(1).我使用ARM的控制器來控制一個RF電路,我的程式在Linux下開發,使用uclinux來執行ARM與RF電路的工作流程!!

(2).我使用ARM的GPIO來控制RF電路,其中一支GPIO是CLOCK腳位,另一支GPIO是DATA腳!!在一開始ARM要發送一個Command給RF電路時,CLOCK的控制權是由ARM發送...

(3).當RF電路要做Response迴傳資料給ARM時,這個時候的CLOCK控制權是在RF電路上!!所以這一支GPIO腳是雙向性的!!

(4).我要讀取RF電路所回傳的資料是由當CLOCK控制權在RF電路上,CLOCK處於High時抓取為DATA腳的資料,可能是1或者是0.....

(5).以此類推,抓了8個CLOCK為High時的訊號,就為一筆1byte的資料!! (PS:主要是ARM去偵測GPIO的引腳電平值!!)

(6).但是我的ARM控制器的CLOCK與RF電路的CLOCK時序不同!!ARM發送的時序比RF電路快!!

(7).這樣的話,我的觀念是否正確?可以這樣去判別DATA所送過來的資料....(我沒有使用RS-232來擷取資料!!主要是1Bit,1Bit這樣偵測!!)

(8).因為我自己寫的程式给很多人檢查過..應該是沒問題的...但是每次在超級終端機連接到ARM的uClinux下執行這道手續!!我將以printf()顯示出讀取到DATA的值!!

(9).超級終端機就會當住...我自行每個程序檢查..發現程式只要執行到要接收RF電路回傳的資料就會當住!!無法正確將程序執行完...但是以示波器直接量測GPIO的Pin腳..卻發現RF電路有正確的回傳資料給ARM的GPIO..........所以我認為RF電路有將訊號發送出來給控制器要做處理..但是控制器卻無法處理這些回傳的訊號!!



(10).所以我才會想是否在一個ARM的控制器上,出現了2種不同的CLOCK時序..

但是想了又想..自己覺得RF電路主要回傳的資料給GPIO是靠GPIO的腳偵測準位,來判別資料是為1還是為0!!!應該以時序不相同沒什麼影響!!

(11).這個問題我有思考過了...但是還是一樣卡住沒將他處理掉...所以在此提出這問題...請求各位發表經驗與及是否我哪裡錯了!!謝謝!!

PS:我自己有寫一個副程式來判斷起始位元和結束位元....在這2者之間主要就是RF電路所要回傳的資料值!!

void response(void)
{

int i;

for(i=0;i<8;i ) //偵測8次,為1個Byte

{
while(CLOCK==0) //當CLOCK為0時
{
//什麼事都不做
};

buf[i]=DATA; //將DATA腳的值存到buf[i]內

while(CLOCK!=0) //當CLOCK為1時
{
//什麼事都不做,直到CLOCK的電平落下為0時
};

} //獲取1個bit

printf("DATA= %x %x %x %x %x %x %x %x \t,buf[0],buf[1],buf[2],buf[3],.............. );

}
系統時間:2024-05-12 13:00:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!