国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現模擬USB對8bit數據的NRZI編碼輸出

2020-01-26 13:37:09
字體:
來源:轉載
供稿:網友

USB的NRZI編碼方式,將原數據進行處理,原數據為0時,編碼成電平翻轉,原數據為1時,編碼成電平不翻轉,USB要發送數據的時候,硬件把數據流轉化成為NRZI編碼,然后經過USB的差分線D+和D-將數據發送出去,接收方在接收數據的后做逆處理,要注意的是,在沒有數據傳輸的時候,也就是空閑的時候,數據線是保持高電平的,這點一定要注意,很多書上就是一筆代過,根本不知道為什么!

在USB的頭部有一個同步域,由7個0組成,當編碼成NRZI的時候,就是一串0101010的方波了,而方波的頻率就是發送的波特率。

#include <stdio.h>//對8bit數據的NRZI編碼 int main(void){ int i , j; unsigned char RawData = 0x00 ; //0000 0000 unsigned char NRZI_Data ; unsigned char buffer[8] ; unsigned char state = 1 , _state; //打印原始數據  printf("RawData:0x%x/n",RawData); //處理8bit數據,將數據保存到數組里  for(i = 0 ; i < 8 ; i ++) { //如果最高位為1時  //如果為1,翻譯成電平不翻轉 if(RawData & 0x80)   buffer[i] = _state ; else  {  //設置一個空閑位idle,后面NRZI變化的時候也要關注它   if(state == 1)  {  buffer[i] = !state ;   state = -1 ;  goto __flag ;  }  buffer[i] = !_state ; } //保持上一個數據的狀態  __flag: _state = buffer[i] ; RawData <<=1 ; } //組合  for(i = 0 , j = 7 ; i < 8 , j >= 0 ; i++ , j--) NRZI_Data |= buffer[i] << j ; printf("NRZI_Data:0x%x/n",NRZI_Data);  return 0 ;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 汕头市| 南宫市| 湖北省| 恩平市| 阿合奇县| 南安市| 湘乡市| 灵台县| 桂阳县| 天津市| 平江县| 松阳县| 宜都市| 新野县| 平南县| 兴安县| 雷山县| 嫩江县| 垦利县| 河北省| 如皋市| 二连浩特市| 依安县| 堆龙德庆县| 辛集市| 海城市| 象州县| 郓城县| 蒙山县| 连城县| 宁武县| 东山县| 灵寿县| 甘洛县| 沂南县| 成安县| 宣城市| 修文县| 镇宁| 法库县| 大渡口区|