IIC总线的应答信号问题
1、首先IIC通信要分清主机与从机的关系,在主机对从机进行写操作时,一般是在传送完一个数据之后单片机就进入检测应答信号状态:先将两个脚置位SDA=1;SCL=1;然后在一定时间内不断检测SDA脚的电平状态,比如说你弄个循环for(i=255;i>0;i--){..;if(...)break;...}进行不断判断,当SDA的电平为低时就跳出循环,说明此时从机已经ACK,就可说明是I2C器件拉低;如果为高时,则一直判断完整个循环,到最后还为高时,就说明没有应答。2、写应答和读应答肯定有所区别的。写应答是在你读从机数据期间,当你接收到一个数据时,可以应答的(想继续通信就应答),就将SDA复位(拉低),不想应答(想结束通信时)就置位(SDA=1)。读应答则在主机写数据给从机期间,每当从机接收到一个数据就会应答一下(将数据SDA线拉低),主机将不断检测SDA线的电平,主机就是凭SDA的电平状态才知道从机是否已经正确地接收了主机发送的数据。
1.应答信号sda是在scl的上升沿变化为0的;
2.读操作的应答信号和写操作的应答信号都由从设备驱动。
可参考“i2c总线协议规范”,网上搜一下即可。
绛旓細1銆侀鍏IIC閫氫俊瑕佸垎娓呬富鏈轰笌浠庢満鐨勫叧绯伙紝鍦ㄤ富鏈哄浠庢満杩涜鍐欐搷浣滄椂锛屼竴鑸槸鍦ㄤ紶閫佸畬涓涓暟鎹箣鍚庡崟鐗囨満灏辫繘鍏ユ娴搴旂瓟淇″彿鐘舵侊細鍏堝皢涓や釜鑴氱疆浣峉DA=1锛汼CL=1锛涚劧鍚庡湪涓瀹氭椂闂村唴涓嶆柇妫娴婼DA鑴氱殑鐢靛钩鐘舵侊紝姣斿璇翠綘寮勪釜寰幆for(i=255;i>0;i--){..;if(...)break;...}杩涜涓嶆柇鍒ゆ柇锛屽綋SDA鐨...
绛旓細1銆侀鍏IIC閫氫俊瑕佸垎娓呬富鏈轰笌浠庢満鐨勫叧绯伙紝鍦ㄤ富鏈哄浠庢満杩涜鍐欐搷浣滄椂锛屼竴鑸槸鍦ㄤ紶閫佸畬涓涓暟鎹箣鍚庡崟鐗囨満灏辫繘鍏ユ娴搴旂瓟淇″彿鐘舵侊細鍏堝皢涓や釜鑴氱疆浣 SDA=1锛汼CL=1锛涚劧鍚庡湪涓瀹氭椂闂村唴涓嶆柇妫娴婼DA鑴氱殑鐢靛钩鐘舵侊紝姣斿璇翠綘寮勪釜寰幆for(i=255;i>0;i--){..;if(...)break;...}杩涜涓嶆柇鍒ゆ柇锛屽綋SDA...
绛旓細1.搴旂瓟淇″彿SDA鏄湪SCL鐨勪笂鍗囨部鍙樺寲涓0鐨勶紱2.璇绘搷浣滅殑搴旂瓟淇″彿鍜屽啓鎿嶄綔鐨勫簲绛斾俊鍙烽兘鐢变粠璁惧椹卞姩銆傚彲鍙傝冣淚2C鎬荤嚎鍗忚瑙勮寖鈥濓紝缃戜笂鎼滀竴涓嬪嵆鍙
绛旓細搴旂瓟鏄帴鏀惰鍒嚜鍔ㄤ骇鐢熺殑锛屼笉涓瀹氭槸浠庢満銆傚湪IIC涓婇櫎浜嗗紑濮嬶紝鍋滄鍜岄噸澶嶅紑濮嬪锛屾墍鏈夋暟鎹兘鍦ㄥ湪鏃堕挓鐨勪綆鐢靛钩鍙樺寲鐨勶紝涔熷氨鏄负楂樺悗锛屾暟鎹氨搴旇绋冲畾浜嗐傛墍浠ュ鏋滄槸妯℃嫙鎬荤嚎锛屽簲鍏堟湁涓嬮檷娌匡紝鍐嶈涓鸿緭鍏ワ紝鐒跺悗璇籄CK锛屽鏋滄槸浠庢満鐨勫簲绛锛屾槸鑷姩浜х敓鐨勶紝鏄綔涓烘暟鎹氫俊姝g‘鐨勫垽鏂爣蹇楋紝涓轰簡鍙潬锛屾槸瑕佸垽鏂殑...
绛旓細搴旂瓟鏄帴鏀惰鍒嚜鍔ㄤ骇鐢熺殑锛屼笉涓瀹氭槸浠庢満銆傚湪IIC涓婇櫎浜嗗紑濮嬶紝鍋滄鍜岄噸澶嶅紑濮嬪锛屾墍鏈夋暟鎹兘鍦ㄥ湪鏃堕挓鐨勪綆鐢靛钩鍙樺寲鐨勶紝涔熷氨鏄负楂樺悗锛屾暟鎹氨搴旇绋冲畾浜嗐傛墍浠ュ鏋滄槸妯℃嫙鎬荤嚎锛屽簲鍏堟湁涓嬮檷娌匡紝鍐嶈涓鸿緭鍏ワ紝鐒跺悗璇籄CK锛屽鏋滄槸浠庢満鐨勫簲绛锛屾槸鑷姩浜х敓鐨勶紝鏄綔涓烘暟鎹氫俊姝g‘鐨勫垽鏂爣蹇楋紝涓轰簡鍙潬锛屾槸瑕佸垽鏂殑...
绛旓細鍗忚鐨勬椂搴忚鍒1. 绌洪棽鐘舵 IIC鎬荤嚎鐨SDA鍜孲CL绾垮湪楂樼數骞虫椂锛屼唬琛ㄦ荤嚎澶勪簬绌洪棽鐘舵侊紝鍚勫櫒浠剁殑鍦烘晥搴旂澶勪簬鎴锛岀敱涓婃媺鐢甸樆淇濇寔淇″彿绋冲畾銆傝繖鏄荤嚎閲婃斁鐨勫叧閿椂鍒汇2. 璧峰涓庡仠姝俊鍙 璧峰淇″彿鏄疭CL涓洪珮鏃讹紝SDA鐢遍珮鑷充綆鐨勭灛闂磋穬鍙橈紱鑰屽仠姝俊鍙峰垯鏄湪SCL涓洪珮鏃讹紝SDA鐢变綆鍗囪嚦楂樸傝娉ㄦ剰锛岃繖涓ょ淇″彿閮芥槸...
绛旓細鍙IIC鎺ュ彛鑺墖鏈崯鍧忥紝鍒欎富瑕闂灏辨槸SDA銆丼CL鐨勬椂搴忛棶棰樸備互AT89C51+24C04椹卞姩鏁扮爜绠′负渚嬶細锛堝浘鐗囦紶涓嶄笂锛塱nclude <reg51.h> include <intrins.h> define uchar unsigned char define uint unsigned int define NOP4() {_nop_();_nop_();_nop_();_nop_();} sbit SCL = P1^0; //...
绛旓細IIC涓鐨勫簲绛鏄敱浠庢満鍦ㄧ9涓猄CL鍛ㄦ湡鎷変綆SDA瀹炵幇鐨 鑻ヤ笉鑳戒骇鐢熷簲绛旀垨鑰呰鏄湪绗9涓懆鏈熶娇SDA涓洪珮鐢靛钩鍗抽潪搴旂瓟鍒欒鏄庝粠鏈哄繖鎴栬呮湁鍏朵粬鐨勫師鍥犳棤娉曞搷搴旓紝涓绘満搴旇鍙戦佸仠姝㈡垨鑰呴噸鏂板紑濮嬪彂閫 鑰屽簲绛旇鏄庝簡涓绘満鍙戦佺殑涓瀛楄妭鏁颁粠鏈哄凡缁忔敹鍒帮紝鍙互缁х画鎿嶄綔 ...
绛旓細纭欢涓婃鏌ヤ笅iic璁惧鏈夋病鏈夎櫄鐒婏紝鎬荤嚎鏈夋病鏈夊啿绐侊紝绀烘尝鍣ㄧ偣涓媠cl鍜宻da绾挎湁娌℃湁鍗婇珮鐢靛钩锛涘鏋滀綘鐨勪唬鐮佷笉淇濊瘉鏄垚鐔熺殑锛屽缓璁ず娉㈠櫒瑙﹀彂涓涓嬬湅鐪嬫椂搴忔弧涓嶆弧瓒砳ic鍗忚瑕佹眰锛涜鍑虹殑鏁版嵁鏄荤嚎榛樿鐘舵乫f锛岃鏄庤澶囨病鍝嶅簲锛屾渶鏈夊彲鑳斤細鍦板潃涓嶅锛涙椂搴忎笉瀵癸紱閫熺巼涓嶅尮閰嶃
绛旓細寮傚父澶勭悊涓庢搷浣滆鑼冿紝IIC鎬荤嚎鍦ㄩ潪姝e父鎯呭喌涓嬬殑澶勭悊鑷冲叧閲嶈銆傞噸澶嶈捣濮嬪拰鎰忓鍋滄鍙兘瀵艰嚧鎬荤嚎娣蜂贡銆傛爣鍑嗘搷浣滆绋嬪寘鎷細涓绘満鍐欏叆浠庢満鏃朵繚鎸佹暟鎹柟鍚戯紝璇诲彇鍒欎粠涓绘満鍒颁粠鏈猴紝鍦板潃鍜孯/W浣嶉渶姝g‘璁剧疆銆傚啓鍏ュ瓨鍌ㄥ櫒鏃讹紝杩橀渶棰濆鎻愪緵鍐呴儴瀵勫瓨鍣ㄥ湴鍧銆傝嫢闇閲嶆柊寮濮嬩紶杈擄紝涓绘満闇鍙戦丯AK淇″彿銆傛荤粨鏉ヨ锛孖IC鎬荤嚎鍑熷叾...