HD64570 使用小計

2022-07-27 19:06:10 字數 1528 閱讀 8408

有關64570的介紹網上很多,可以自行google,下面是我用64570實現的sdlc協議程式一些總結.

所使用到的主要暫存器

md0:傳送協議,crc校驗

md1:hdlc協議中位址配置

md2:全雙工,資料編碼

rxs:接收時鐘

txstmc:和txs中的br一起配置波特率的值

sa0:

sa1:位址設定,這個主要是在接收資料的時候,如果位址不相同,那麼晶元會將這一幀的資料丟棄。在傳送資料的時候,晶元不會自動的將sa0 sa1傳送出去,需要將sa0和sa1當做普通資料一樣傳送出去

trc0:當fifo中的資料位元組數小於等於trc0,那麼st0中的txrdy會自動變成1。

trc1:當fifo中的資料位元組數大於trc1+1,那麼st0中的txrdy會自動變成0。

rrc:當fifo中的資料大於rrc時,st0中的rxrdy會變成1。

cmd:命令配置,包括暫存器復位,允許傳送,接收。等

傳送流程:傳送資料時,首先cmd寫21,復位暫存器,然後配置上面提到的暫存器,然後cmd寫02,此時便可以進行傳送。首先讀取st0中txrdy,當其為1時,可以傳送資料(往trbl寫資料),當傳送資料總的位元組數等於規定的位元組數時,需要判斷st3中的第0位,表示當前傳送緩衝器中的資料是否已經全部傳送出去,如果已經全部傳送出去,便可進行下一次傳送,注意,64570如果要再次傳送資料,必須需要重新配置(可能應該是cmd寫02即可,但是在我的程式裡,重新配置比較容易)。

接收流程:接收資料時,首先cmd寫21,復位暫存器,然後配置上面提到的暫存器,然後cmd寫12,便可進行資料接收。首先讀取st0中的rxrdy,當其為1時,表示可以接收資料,每接收一位元組資料後,最好先讀cst0,看當前資料是否接收完畢,如果沒有再去查詢st0,重複,直到cst0表示資料接收完畢,這樣做的好處是可以接收任意長度的資料,而不用事先定義接收字長。

還可能用到的暫存器:st2或fst,裡面有一位是crc校驗位,表明當前接收的資料crc校驗是否出錯。

附錄是我編寫的程式實現的功能:使用altera cyclone ep1c6q240,quartus8.0,verilog

1 傳送格式是sdlc協議,帶位址和crc校驗 即

7e sa0 sa1 data crc 7e

2 控制命令字用來控制接收或傳送切換,包括:①只接受②只傳送③先接受再傳送④先傳送再接收

3 超時判斷,當資料傳送出去後,如果對方在規定時間內沒有返回資料或crc校驗錯誤,重發一次,如果三次都沒有成功,則提示超時或者是crc錯誤。

4 由於64570有兩個通道,本程式使用通道0作傳送,通道1作接收,如果在板子上將通道0的txd和通道1的rxd,txc和rxc連在一起,那麼傳送出去的資料直接可以在通道1接收到。

5 配置引數以mif檔案的形式初始化在rom中,更改時直接修改mif檔案即可。

6 傳送資料可以通過in-system memory直接編輯,接收到的資料也可以通過in-system memory檢視,控制命令字,啟動傳送,傳送資料長度都可直接在in-system memory中修改。

工程打包

自行將zip格式改成rar格式

std string replace使用小計

ctrl c ctrl v 真是害死人,看起來簡單的東西,往往卻又很容易出問題 究其原因,還在於只知其表不知其裡,容易想當然。今天遇到的問題是簡單呼叫string replace替換子串的問題,如 std string stest1 12x567890 std string stest2 stest...

HD7 使用點滴

1.修改登錄檔 突破hd7 wp7系統簡訊的個數限制 使用登錄檔編輯器 hkey current user software microsoft shortmsg settings 修改將limitrecipients的建值,鍵值為10就是一次性最多可以 10條簡訊,為20就是最多可以 20條簡訊。...

使用hdfs slurper 將資料匯入hdfs

slurper 可以將任何格式的資料匯入hdfs,這裡有 git clone git github.com alexholmes hdfs file slurper.git cd hdfs file slurper mvn package將target下的hdfs slurper 0.1.8 pac...