請教一個GPIO抓取資料的觀念性問題!!由ARM控制!! |
缺席
|
Tommy0325
一般會員 發表:5 回覆:4 積分:1 註冊:2007-05-04 發送簡訊給我 |
(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],.............. ); } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |