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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2979|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

關(guān)于I2C數(shù)據(jù)有效性的疑問(wèn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:318173 發(fā)表于 2018-7-27 21:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)字節(jié)發(fā)送函數(shù)我看得明白是符合數(shù)據(jù)位的有效性性規(guī)定,一字節(jié)數(shù)據(jù)一次一位發(fā)送,以SCL=1保證數(shù)據(jù)有效性,之后將SCL置0,當(dāng)需要再發(fā)送一位時(shí)SCL=0,符合數(shù)據(jù)有效性

可是這個(gè)字節(jié)接收函數(shù)首先他就讓SCL=0,不是很懂,我的初步理解結(jié)合兩個(gè)函數(shù)一起看,當(dāng)字節(jié)發(fā)送函數(shù)時(shí)由主機(jī)控制SCL變化,發(fā)送一位上SDA,讓SCL=1,先保證他數(shù)據(jù)有效傳輸,然后SCL=0,同上,之后再發(fā)送一位時(shí),SCL=0,因此SDA可以變化,對(duì)于字節(jié)接收函數(shù),此時(shí)由從機(jī)控制SCL變化,當(dāng)主機(jī)發(fā)送完數(shù)據(jù)叢機(jī)準(zhǔn)備接收時(shí),首先打開(kāi)SCL=0,保證一位一位接收時(shí)SDA可以變化,當(dāng)有一位在SDA上時(shí),讓SCL=1,保證傳輸?shù)綇臋C(jī)這的數(shù)據(jù)是有效的。請(qǐng)大佬指證

至于最初的字節(jié)接收函數(shù)開(kāi)始的SDA=1,和最后的SCL=0不是很懂。

請(qǐng)大佬指教一下,不是很懂,希望大佬能詳細(xì)講解下,這里想了很久卡了很久,希望大佬可以對(duì)比著這兩個(gè)函數(shù)講講數(shù)據(jù)傳輸過(guò)程。

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



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

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

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


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

使用道具 舉報(bào)

沙發(fā)
ID:68356 發(fā)表于 2018-7-29 03:46 | 只看該作者
接收函數(shù)一開(kāi)始SDA置一,是讓從機(jī)來(lái)決定總線電平,不產(chǎn)生線與,使用這個(gè)接收函數(shù)時(shí),主機(jī)是發(fā)送了接收指令給從機(jī),從機(jī)送出數(shù)據(jù),當(dāng)從機(jī)接收到發(fā)送指令后,就會(huì)把數(shù)據(jù)的第一位放到總線上,這個(gè)時(shí)候的SCL就是發(fā)送指令的最后一位的結(jié)束,就是低電平,所以接收函數(shù)的SCL以低電平開(kāi)始,每產(chǎn)生一個(gè)高電平,在其下降沿之后,從機(jī)再放第二位數(shù)據(jù)到總線上。。。好像是這么回事

評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:380500 發(fā)表于 2018-7-29 15:28 | 只看該作者
我也想知道,新手學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

5#
ID:318173 發(fā)表于 2018-7-29 16:39 | 只看該作者
xiuyueyuan2013 發(fā)表于 2018-7-29 03:46
接收函數(shù)一開(kāi)始SDA置一,是讓從機(jī)來(lái)決定總線電平,不產(chǎn)生線與,使用這個(gè)接收函數(shù)時(shí),主機(jī)是發(fā)送了接收指令 ...

那接收函數(shù)的數(shù)據(jù)位有效性怎么看呢?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久草在线在线精品观看 | 99免费精品视频 | 国产成人一区二 | 91免费看片 | 奇米在线| 秋霞a级毛片在线看 | 亚洲欧美日韩高清 | 久热爱| 亚洲欧美日韩国产 | 欧美日产国产成人免费图片 | 欧美一区二区三区的 | 国产高清视频在线观看 | 美女视频黄色的 | 成人欧美一区二区三区在线观看 | 午夜在线视频一区二区三区 | 欧美色影院 | 欧美一级片在线看 | 中文字幕免费视频 | 日韩av在线一区二区 | 欧美一区免费 | 亚洲精品免费在线 | 欧美激情精品久久久久久 | 精品免费国产视频 | 日韩乱码av| 一区二区不卡视频 | 在线欧美一区二区 | 久久精品福利视频 | 草草草草视频 | av大片在线观看 | 在线中文视频 | 亚洲免费精品 | 中文字幕一区二区三区四区五区 | 偷拍自拍网站 | 日韩中文字幕免费 | av中文字幕在线 | 久久久久久久综合 | 亚洲精品一区中文字幕乱码 | 欧美一区中文字幕 | 亚洲国产精品一区二区久久 | 性一交一乱一透一a级 | 国产日产精品一区二区三区四区 |