久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3362|回復: 0
打印 上一主題 下一主題
收起左側

實現TEA5767與51單片機的通訊,主要為讀寫正常運行。

[復制鏈接]
跳轉到指定樓層
樓主
ID:487423 發表于 2019-3-9 15:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

在具體實驗時,SDACLK接單片機引腳,BUSMOD接地,其余478910引腳空接。

TEA5767主要電性能指標:工作電壓:2.5-5V,工作電流10mA,靈敏度15V,輸出信號電平75mV,可通過I2CSPI總線驅動。

TEA5767寫入數據時,地址的最低位是0,即寫地址是C0。讀出數據時地址的最低位是1,即讀地址是C1TEA5767的控制寄存器要寫入5個字節,每次寫入數據時必須嚴格按照下列順序進行:地址、字節1、字節2、字節3、字節4、字節5。每個字節的最高位首先發送。在時鐘的下降沿后寫入的數據生效。上電復位后,設置為靜音,所有其它位均被置低,必須寫入控制字初始化芯片。



I2C總線


I2C總線是一種簡單、雙向兩線制同步串行總線。其中:SDA串行數據線,SCL是串行時鐘線。接口電路為開漏輸出,需通過上拉電阻接VCC

地址幀(address frame7-bit數據(其中高四位為器件類型識別符,接著三位為片選符)+1-bit操作符(1表示讀操作,0表示寫操作)+1-bit ACK/NACK

這個幀中前面8bits發送完后,接收端的設備獲得SDA控制權,此時接收設備應該在第9個時鐘脈沖之前回復一個ACK(將SDA拉低)以表示接收正常,如果接收設備沒有將SDA拉低,則說明接收設備可能沒有收到數據(如尋址的設備不存在或設備忙)或無法解析收到的消息,如果是這樣,則由master來決定如何處理(stoprepeatedstart condition)。


數據幀(data frames):

在地址幀發送之后,就可以開始傳輸數據了。Master繼續產生時鐘脈沖,而數據則由master(寫操作)或slave(讀操作)放到SDA上。每個數據幀8bits,數據幀的數量可以是任意的,直到產生停止條件。每一幀數據傳輸(即每8-bit)之后,接收方就需要回復一個ACKNACK(寫數據時由slave發送ACK,讀數據時由master發送ACK。當master知道自己讀完最后一個byte數據時,可發送NACK然后接stopcondition)。
  1. void I2C_start()//啟動I2C 總線
  2. {
  3.         I2C_SDA=1;//發生起始條件的數據信號
  4.         _Nop();
  5.         _Nop();
  6.         I2C_SCL=1;
  7.         _Nop();_Nop();_Nop();_Nop();
  8.         I2C_SDA=0;//發生起始信號
  9.         _Nop();_Nop();_Nop();_Nop();
  10.         I2C_SCL=0;// 鉗住I2C總線,準備發送或接收數據 
  11. }
  12. /////////////////////////////////////////
  13. void I2C_stop()//停止I2C總線
  14. {
  15.         I2C_SDA=0;
  16.         I2C_SCL=0;// 發送結束條件的數據信號
  17.         _Nop();
  18.         I2C_SCL=1;
  19.         _Nop();_Nop();_Nop();_Nop();
  20.         I2C_SDA=1;// 發送I2C總線結束信號
  21. }
  22. /////////////////////////////////////////
  23. bit I2c_waitAck()//MCU等待應答
  24. {
  25.         uchar ErrTime=400;// 因故障接收方無ACK,超時值。
  26.         I2C_SCL=0;
  27.         I2C_SDA=1;
  28.         _Nop();_Nop();
  29.         I2C_SCL=1;
  30.         while(I2C_SDA)
  31.         {
  32.                 ErrTime--;
  33.                 if(ErrTime==0)
  34.                 {
  35.                         I2C_stop();
  36.                         return 0;
  37.                 }
  38.         }
  39.                 I2C_SCL=1;
  40.         _Nop();
  41.         _Nop();
  42.         _Nop();
  43.         _Nop();
  44.        
  45.         return 1;
  46. }
  47. ////////////////////////////////
  48. void I2c_Ack(void)//MCU應答信號
  49. {
  50.         I2C_SDA=0;
  51.         I2C_SCL=0;
  52.         _Nop();_Nop();_Nop();_Nop();
  53.                 I2C_SCL=1;
  54.   _Nop();_Nop();_Nop();_Nop();
  55.         I2C_SCL=0;
  56. }
  57. ///////////////////////////////
  58. void I2c_NoAck(void)//MCU不應答信號
  59. {
  60.         I2C_SDA=1;
  61.         I2C_SCL=0;
  62.         _Nop();_Nop();
  63.                 I2C_SCL=1;
  64.   _Nop();_Nop();
  65.         I2C_SCL=0;
  66. }
  67. ////////////////////////////////
  68. void I2C_Send_Byte(unsigned char sen)
  69. {
  70.         unsigned char i=8;
  71.         while(i--)
  72.         {
  73.                 I2C_SCL=0;
  74.                 _Nop();
  75.                 _Nop();
  76.         if(sen &0x80)
  77.                 I2C_SDA=1;
  78.         else
  79.                 I2C_SDA=0;
  80.         _Nop();
  81.         _Nop();
  82.         I2C_SCL=1;  
  83.         _Nop();  
  84.         sen<<=1;
  85.   }
  86.   I2c_waitAck();
  87. }



  88. static unsigned char I2C_Receive_Byte(void)
  89. {
  90.         unsigned char i=8,data_buffer;
  91.         I2C_SDA=1;
  92.         while(i--)
  93.         {
  94.                 I2C_SCL=0;
  95.      _Nop();_Nop(); _Nop();_Nop();
  96.                 I2C_SCL=1;
  97.                 _Nop();_Nop();
  98.                 data_buffer<<=1;
  99.                 if(I2C_SDA) data_buffer++;
  100.         }
  101.         return (data_buffer);
  102. }
  103. /////////////////////////////////////////
  104. void ATIICxx_PWrite(unsigned char *McuAddress,unsigned char count)//向模塊寫入數據
  105. {
  106.         I2C_start();
  107.         I2C_Send_Byte(0xc0);//寫入起始地址
  108.         while(count--)
  109.         {
  110.                 I2C_Send_Byte(*(unsigned char*)McuAddress);
  111.                 ((unsigned char*)McuAddress)++;
  112.         }
  113.         I2C_stop();
  114. }
  115. void ATIICxx_PRead(unsigned char *McuAddress,unsigned char count)
  116. //讀取模塊數據
  117. {
  118.         I2C_start();
  119.         I2C_Send_Byte(0xc1);//讀取起始地址
  120.         while(count--)
  121.         {
  122.         *McuAddress=I2C_Receive_Byte();
  123.                 I2c_Ack();
  124.                 McuAddress++;
  125.         }
  126.         I2c_NoAck();
  127.         I2C_stop();
  128. }
  129. void main()
  130. {
  131.        
  132.         radio_write_data[0]=0x2f;
  133.         radio_write_data[1]=0x19;
  134.         radio_write_data[2]=0x80;
  135.         radio_write_data[3]=0x37;
  136.         radio_write_data[4]=0x00;
  137.         ys(210);
  138.         ATIICxx_PWrite(&radio_write_data[0],0);
  139.         radio_write_data[0]=0x2f;
  140.         ys(340);
  141.   ATIICxx_PWrite(&radio_write_data[0],0);
  142. if(K2==0)
  143.                 {
  144.                         ys(30);
  145.                         if(K2==0)
  146.                         {
  147.                                 while(1){
  148.                 ATIICxx_PRead(radio_read_data,2);//讀取時 ,寫入時可改為ATIICxx_PWrite(&radio_write_data[0],2);后一位可以改變寫入數據個數

  149.                                         ys(1000);
  150.                                                         ys(1000);
  151.                                        
  152.                         }
  153.                         }
  154.                 }
  155.         }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品亚洲一区二区三区 | 欧美男人天堂 | 99re在线视频观看 | 中文字幕一区二区三区四区不卡 | 亚洲国产二区 | 日韩高清黄色 | 精品国产一区二区三区免费 | 国产综合久久 | 成人三级视频 | 日韩精品一区二区三区 | 亚洲精品性视频 | 久久这里只有精品首页 | 人人操日日干 | av免费观看网站 | 中文字幕一区二区三区在线观看 | 精品一区二区三区在线观看 | 亚洲国产第一页 | 99视频在线免费观看 | 黄片毛片| 狠狠操电影 | 亚洲精品一区二区三区丝袜 | 中文字幕在线观看 | 色视频网站在线观看 | 久久久国产精品网站 | 亚洲一区 中文字幕 | 天堂av资源 | 成人免费日韩 | 国产精品美女久久久久aⅴ国产馆 | 免费一级大片 | 国产区视频在线观看 | 国产高清在线观看 | 91日韩在线| 欧美日韩综合视频 | 久久久激情 | 成人精品久久 | 精品国产一区二区三区性色av | 99综合| 97色在线视频 | 国产午夜精品理论片a大结局 | 日本人麻豆 | 久久综合一区二区 |