µÚ1ÕÂ IIC
1.1 IIC½éÉÜ
IIC£ºInter-Integrated Circuit(¼¯³Éµç·×ÜÏß)£¬IICͨÐÅÐÒéÊÇ·ÉÀûÆÖ¹«Ë¾ÓÚ80Äê´ú³õ·¢Ã÷µÄÒ»ÖÖÔËÓÃÓÚоƬÓëоƬ֮¼ä½øÐÐÐÅÏ¢½»»»µÄ´®ÐС¢Í¬²½¡¢°ëË«¹¤Í¨ÐÅÐÒé¡£
Ó¦Óó¡ºÏ£ºÐ¾Æ¬ÓëоƬ֮¼ä¡£°å¼äͨÐÅ¡£¹²Ä£Í¨ÐÅ¡£¿¹¸ÉÈÅÄÜÁ¦ºÜ²î¡£
//£ºCÓïÑÔ¡¢CÓïÑÔѧϰ¡¢CÓïÑÔÅàѵ¡¢MCUѧϰ¡¢PCB½Ì³Ì¡¢PCBѧϰ¡¢Ç¶Èëʽѧϰ¡¢Ç¶ÈëʽÅàѵ¡¢Ç¶Èëʽ½Ì³Ì¡¢Ç¶Èëʽǰ¾°¡¢Ç¶ÈëʽLinux¡¢Linux¿ª·¢¡¢Linuxϵͳ¡¢python¡¢python½Ì³Ì¡¢pythonѧϰ¡¢Python±à³Ì¡¢Python´ýÓö¡¢ÎïÁªÍø¿ª·¢¡¢ÎïÁªÍøÅàѵ¡¢ÎïÁªÍøÖÇÄÜ¿ØÖÆ¡¢ÎïÁªÍøѧϰ¡¢ÐÅÓ¯´ïÅàѵ¡¢ÐÅÓ¯´ïǶÈëʽ £º//
1.2 IIC×ÜÏß
1) IICÐÒéÓÐÁ½¸ù×ÜÏߣºÊ±ÖÓ×ÜÏßSCK£¬Êý¾Ý×ÜÏßSDA¡£
2) ÕâÁ½¸ù×ÜÏ߶¼ÐèÒª½ÓÉÏÀµç×è¡£
3) ËùÓÐIICÉ豸¶¼½ÓÔÚ¸Ã×ÜÏßÉÏ£ºÒ»¸öÖ÷»úºÍ¶à¸ö´Ó»ú¡£
4) IIC×ÜÏß¿ÕÏÐΪ¸ßµçƽ¡£
5) ʱÖÓ×ÜÏßSCKÓÉÖ÷»ú¿ØÖÆ¡£
1.3 IICÐÒé
IICÆðʼÌõ¼þ£º±íʾIICͨÐÅ¿ªÊ¼£¬ÔÚÖ÷»ú·¢³öÆðʼÌõ¼þÖ®ºó£¬ËùÓеĴӻú¶¼»á×¼±¸½ÓÊÕÉ豸µØÖ·¡£Ö÷»ú·¢³öµÄÉ豸µØÖ·ºÍ´Ó»ú×ÔÉíµÄÉ豸µØÖ·Ïàͬʱ£¬´Ó»ú¾Í»á·¢ËÍÓ¦´ð¡£Èç¹û²»Ïàͬ£¬´Ó»ú¾²Ä¬¡£
IIC½áÊøÌõ¼þ£º±íʾIICͨÐŽáÊø£¬ÔÚÖ÷»ú·¢³ö½áÊøÌõ¼þÖ®ºó£¬ËùÓеĴӻú¶¼»á½øÈë¿ÕÏÐ״̬¡£
IICλ´«Ê䣺һ´Î´«Êä8¸öλµÄÊý¾Ý£¬¸ßλÔÚÇ°£¬Ò»¸öʱÖÓ·¢ËÍÒ»¸öλµÄÊý¾Ý¡£
IICÓ¦´ð£ºÃ¿´ÎÊÕµ½Êý¾ÝµÄÉ豸¶¼»áÓ¦´ð¡£
1.3.1 IIC»ù±¾ÐźÅ
IICÆðʼÐźţºÔÚSCK¸ßµçƽÆڼ䣬SDAµÄϽµÑض¼ÊÇÆðʼÐźš£
IIC½áÊøÐźţºÔÚSCK¸ßµçƽÆڼ䣬SDAµÄÉÏÉýÑض¼ÊǽáÊøÐźš£
IICÓ¦´ðÐźţºÔÚµÚ9¸öʱÖӵĸߵçƽÆڼ䣬SDAΪµÍµçƽ±íʾӦ´ð£»·´Ö®ÔòΪ·ÇÓ¦´ð¡£
IICÊý¾Ý·¢ËÍ£ºÒ»¸öʱÖÓ×¼±¸Ò»¸öλµÄÊý¾Ý£¨À¸ß»òÕßÀµÍSDA£©£¬ÔÚʱÖӵĵ͵çƽÆÚ¼ä×¼±¸Êý¾Ý¡£¸ßλÔÚÇ°¡£
IICÊý¾Ý½ÓÊÕ£ºÒ»¸öʱÖÓ½ÓÊÕÒ»¸öλµÄÊý¾Ý£¬ÔÚʱÖӵĸߵçƽÆÚ¼ä²ÉÑùÊý¾Ý¡£¸ßλÔÚÇ°¡£
×¢Ò⣺ÔÚÊý¾Ý·¢ËÍÆڼ䣬SCKΪ¸ßµçƽµÄʱºò£¬SDA¾ø¶Ô²»ÔÊÐí·¢Éú¸Ä±ä¡£ËùÒÔIICÊý¾Ý·¢ËÍʱ£¬Ö»ÄÜÔÚSCKΪµÍµçƽÆÚ¼ä×¼±¸Êý¾Ý¡£
IICµÄʱÖÓ£º¿ÉÒÔÓÐÒÔÏÂÁ½ÖÖ£ºÁ½ÖÖ¶¼¿ÉÒÔʹÓÃ
SCK_L(); //ÑÓʱ SCK_H(); //ÑÓʱ | SCK_H(); //ÑÓʱ SCK_L(); //ÑÓʱ |
1.4 IO¿ÚË«ÏòÇл»
1£©IO¿ÚÅäÖÃΪÍÆÍìÊä³ö£¬ÄÜ·ñÕý³£Ê¹Óð´¼ü¼ì²â¡£
2£©Â©¼«Êä³ö£º¿ªÂ©Êä³ö
3£©¿ªÂ©Êä³öģʽÏ£¬IOÊä³öµÍµçƽ£¬ÊäÈëÊý¾Ý¼Ä´æÆ÷²»ÄÜÕý³£¹¤×÷¡£¡£
4£©¿ªÂ©Êä³öģʽÏ£¬IOÊä³ö¸ßµçƽ£¨Êä³ö²¿·Ö¸ß×è̬£©£¬ÊäÈëÊý¾Ý¼Ä´æÆ÷ÄÜÕý³£¹¤×÷¡£
¿ªÂ©Êä³öģʽÏ£¬IO¿ÚÐèÒªÊä³ö¸ßµÍµçƽ£ºÖ±½Ó¿ØÖÆODR¼Ä´æÆ÷¡£
©¼«Êä³öÐèÒªÇл»Îª¡°ÊäÈëģʽ£¨Êä³ö²¿·Ö¸ß×è̬£©¡±£ºIOÊä³ö¸ßµçƽ¡£
1.5 IICͨÐÅËÙ¶È
IICÊôÓÚÒ»ÖÖµÍËÙͨÐÅÐÒ飬IICµÄ³£¼ûͨÐÅËٶȣº100KHz£¬400KHz£¬3.4MHz¡£
¼ÙÈçÎÒÃÇÐèÒª100KHzµÄIIC£¬Ò»¸öʱÖÓÖÜÆÚ10us.
SCK_L();
delay_us(5);
SCK_H();
delay_us(5);
¼ÙÈçÎÒÃÇÐèÒª400KHzµÄIIC£¬Ò»¸öʱÖÓÖÜÆÚ2.5us.
SCK_L();
delay_us(1);
SCK_H();
delay_us(1);
IICÐÒéÒªÇóÊDZȽϿíËɵġ£²»Ì«Ñϸñ¡£±ÈÈçijÆ÷¼þÒªÇó100KHzµÄIICËٶȡ£
50KHz~100KHz¶¼²»»á³ö´í¡£
1.6 Ä£ÄâIIC
1.6.1 ÆðʼÐźÅ
tSU:STA£ºÆðʼÐźŽ¨Á¢Ê±¼ä£¬ÆðʼÐźŲúÉúÇ°£¬×ÜÏß¿ÕÏеÄʱ¼ä£¬×îС4.7us¡£
tHD:STA£ºÆðʼÐźű£³Öʱ¼ä£¬²úÉúÆðʼÐźÅÖ®ºó£¬×ÜÏß±£³Ö²»±äµÄʱ¼ä£¬×îС4us
1.6.2 ½áÊøÐźÅ
tSU:STO£ºÍ£Ö¹ÐźŽ¨Á¢Ê±¼ä£¬²úÉúÍ£Ö¹ÐźÅ֮ǰ£¬SCKΪ¸ß£¬SDAΪµÍµÄ±£³Öʱ¼ä£¬×îС4us¡£
tBUF£º еķ¢ËÍÇ°£¬×ÜÏß¿ÕÏÐʱ¼ä£¬×îС4.7us¡£
1.6.3 Ö÷»ú·¢ËÍÊý¾Ý´Ó»úÓ¦´ð
Ö÷»ú×¼±¸Êý¾ÝµÄʱ¼ä£ºÔÚSCKΪµÍµçƽÆڼ䡣
Ö÷»ú¶ÁÈ¡Ó¦´ðµÄʱ¼ä£ºÔÚµÚ9¸öʱÖÓÖÜÆڵĸߵçƽÆÚ¼ä²ÉÑùSDA¡£µÍµçƽ±íʾӦ´ð£¬¸ßµçƽ±íʾ·ÇÓ¦´ð¡£
1.6.4 Ö÷»ú½ÓÊÕÊý¾ÝÖ÷»úÓ¦´ð
Ö÷»ú²ÉÑùÊý¾ÝµÄʱ¼ä£ºÔÚSCKΪ¸ßµçƽÆڼ䡣
Ö÷»ú×¼±¸Ó¦´ðµÄʱ¼ä£ºÔÚµÚ9¸öʱÖÓÖÜÆڵĵ͵çƽÆÚ¼ä×¼±¸Ó¦´ð¡£µÍµçƽ±íʾӦ´ð£¬¸ßµçƽ±íʾ·ÇÓ¦´ð¡£
1.7 ×÷Òµ
1) ¸´Ï°IICÐÒé¹æ·¶
2) ×Ô¼º¶¯ÊÖÍê³ÉIICµÄ4¸ö»ù±¾Ðźűà³Ì£¬Ìæ»»·¨ÑéÖ¤¡£
3) ԤϰAT24C02£¬Á˽âµÄ´æ´¢¿Õ¼ä´óС£¬ÌØÐÔ£¬Á˽â´ÓÉ豸µØÖ·¡£
4) ´ÓÉ豸µØÖ· = 7λӲ¼þµØÖ·+¶Áд·½Ïòλ
ÐÅÓ¯´ïרעǶÈëʽ½ÌÓý10¶àÄ꣬ÔÚǶÈëʽÈí¡¢Ó²¼þÅàѵ½ÌÓý·½ÃæÓÐ×Å·áºñµÄ×ÊÔ´ºÍ¾Ñé»ýÀÛ¡£Ë³Ó¦Êг¡ÐèÇ󣬿ªÉèÓÐǶÈëʽÅàѵ¡¢ÎïÁªÍøÅàѵ¡¢ARMÅàѵ¡¢LinuxÅàѵ¡¢È˹¤ÖÇÄÜPythonÅàѵ¡¢JavaÅàѵ¡¢AndroidÅàѵ¡¢µ¥Æ¬»úÅàѵ¡¢Ó²¼þÅàѵ¡¢PCBÅàѵ¡¢µç×ÓÅàѵ¡¢FPGAÅàѵµÈÅàѵ¿Î³Ì£¬Èç¹ûÄãÏë³ÉΪһÃûÊÜÈË×ð¾´µÄit¿ª·¢¹¤³Ìʦ£¬À´ÐÅÓ¯´ï²Î¼ÓitÅàѵ¿Î³Ì£¬Î´À´µÄÄãÒ»¶¨»á¸Ð¼¤ÏÖÔÚµÄÑ¡Ôñ£¡