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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于I2C數據有效性的疑問

[復制鏈接]
跳轉到指定樓層
樓主
ID:318173 發表于 2018-7-27 21:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這個字節發送函數我看得明白是符合數據位的有效性性規定,一字節數據一次一位發送,以SCL=1保證數據有效性,之后將SCL置0,當需要再發送一位時SCL=0,符合數據有效性

可是這個字節接收函數首先他就讓SCL=0,不是很懂,我的初步理解結合兩個函數一起看,當字節發送函數時由主機控制SCL變化,發送一位上SDA,讓SCL=1,先保證他數據有效傳輸,然后SCL=0,同上,之后再發送一位時,SCL=0,因此SDA可以變化,對于字節接收函數,此時由從機控制SCL變化,當主機發送完數據叢機準備接收時,首先打開SCL=0,保證一位一位接收時SDA可以變化,當有一位在SDA上時,讓SCL=1,保證傳輸到從機這的數據是有效的。請大佬指證

至于最初的字節接收函數開始的SDA=1,和最后的SCL=0不是很懂。

請大佬指教一下,不是很懂,希望大佬能詳細講解下,這里想了很久卡了很久,希望大佬可以對比著這兩個函數講講數據傳輸過程。

  1. /*******************************************************************
  2.                  字節數據接收函數               
  3. 函數原型: UCHAR  I2C_RcvByte();
  4. 功能:        用來接收從器件傳來的數據,并判斷總線錯誤(不發應答信號),
  5.           發完后請用應答函數應答從機。  
  6. ********************************************************************/   
  7. unsigned char   I2C_RcvByte()
  8. {
  9.   unsigned char  retc=0,i;
  10.   sda=1;                     /*置數據線為輸入方式*/      (不是很明白???)
  11.   for(i=0;i<8;i++)
  12.       {
  13.         _nop_();           
  14.         scl=0;                  /*置時鐘線為低,準備接收數據位*/
  15.         _nop_();
  16.         _nop_();                 /*時鐘低電平周期大于4.7μs*/
  17.         _nop_();
  18.         _nop_();
  19.         _nop_();
  20.         scl=1;                  /*置時鐘線為高使數據線上數據有效*/
  21.         _nop_();
  22.         _nop_();
  23.         retc=retc<<1;
  24.         if(sda==1)retc=retc+1;  /*讀數據位,接收的數據位放入retc中 */
  25.         _nop_();
  26.         _nop_();
  27.       }
  28.   scl=0;      (不是很懂???)
  29.   _nop_();
  30.   _nop_();
  31.   return(retc);
  32. }



  33. /*******************************************************************
  34.                  字節數據發送函數               
  35. 函數原型: void  I2C_SendByte(UCHAR c);
  36. 功能:     將數據c發送出去,可以是地址,也可以是數據,發完后等待應答,并對
  37.           此狀態位進行操作.(不應答或非應答都使ack=0)     
  38.            發送數據正常,ack=1; ack=0表示被控器無應答或損壞。
  39. ********************************************************************/
  40. void  I2C_SendByte(unsigned char  c)
  41. {
  42. unsigned char  i;

  43. for(i=0;i<8;i++)  /*要傳送的數據長度為8位*/
  44.     {
  45.      if((c<<i)&0x80)sda=1;   /*判斷發送位*/
  46.        else  sda=0;               
  47.      _nop_();
  48.      scl=1;               /*置時鐘線為高,通知被控器開始接收數據位*/
  49.       _nop_();
  50.       _nop_();             /*保證時鐘高電平周期大于4μs*/
  51.       _nop_();
  52.       _nop_();
  53.       _nop_();         
  54.      scl=0;
  55.     }

  56.     _nop_();
  57.     _nop_();
  58.     sda=1;                /*8位發送完后釋放數據線,準備接收應答位*/
  59.     _nop_();
  60.     _nop_();   
  61.     scl=1;
  62.     _nop_();
  63.     _nop_();
  64.     _nop_();
  65.     if(sda==1)ack=0;     
  66.        else ack=1;        /*判斷是否接收到應答信號*/
  67.     scl=0;
  68.     _nop_();
  69.     _nop_();
  70. }
復制代碼


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

使用道具 舉報

沙發
ID:68356 發表于 2018-7-29 03:46 | 只看該作者
接收函數一開始SDA置一,是讓從機來決定總線電平,不產生線與,使用這個接收函數時,主機是發送了接收指令給從機,從機送出數據,當從機接收到發送指令后,就會把數據的第一位放到總線上,這個時候的SCL就是發送指令的最后一位的結束,就是低電平,所以接收函數的SCL以低電平開始,每產生一個高電平,在其下降沿之后,從機再放第二位數據到總線上。。。好像是這么回事

評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:380500 發表于 2018-7-29 15:28 | 只看該作者
我也想知道,新手學習
回復

使用道具 舉報

地板
ID:111634 發表于 2018-7-29 16:34 | 只看該作者
看IIC信號傳送要求,理解就行了。
回復

使用道具 舉報

5#
ID:318173 發表于 2018-7-29 16:39 | 只看該作者
xiuyueyuan2013 發表于 2018-7-29 03:46
接收函數一開始SDA置一,是讓從機來決定總線電平,不產生線與,使用這個接收函數時,主機是發送了接收指令 ...

那接收函數的數據位有效性怎么看呢?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲一区二区三区四区 | 国产精品毛片av | 色又黄又爽网站www久久 | 日本aⅴ中文字幕 | 九色网址| 日本精品视频一区二区 | 97免费在线观看视频 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 青青草国产在线观看 | 亚洲成人综合社区 | 天天综合天天 | 国产精品18久久久 | 色婷婷综合久久久中字幕精品久久 | 色资源在线 | 一级毛片在线播放 | 亚洲97| 97人人澡人人爽91综合色 | 亚洲精品一区二区久 | 日韩一级免费电影 | 久久毛片| 欧美日韩精品一区二区 | 午夜久久 | 国产精品福利在线观看 | 羞羞视频网站在线观看 | 日韩国产一区二区三区 | 欧美伊人久久久久久久久影院 | 一级毛片成人免费看a | 午夜精品一区 | 国产xxxx在线 | 亚洲欧美日韩高清 | 一级黄色片在线看 | 免费特级黄毛片 | 成人在线观 | 国产高清视频 | 一级片免费视频 | 久久99网站 | www.v888av.com | 九九热九九 | 日韩精品一区二区三区视频播放 | 成人做爰www免费看视频网站 | 亚洲精品68久久久一区 |