MSP430I2C通信演示幻灯片_第1页
MSP430I2C通信演示幻灯片_第2页
MSP430I2C通信演示幻灯片_第3页
MSP430I2C通信演示幻灯片_第4页
MSP430I2C通信演示幻灯片_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I2C通信,内容提要,I2C协议I2C通信I2C应用数码管和矩阵键盘,MSP430G2553引脚图,I2C线与,两条总线:串行时钟线SCL和串行数据线SDA,两条总线都被上拉电阻拉到VCC,线与输出。,I2C协议的基本规范,完整帧包括起始位、地址位、读写位、应答位、数据位、数据位、应答位.数据位、应答位、停止位。从起始位开始每帧数据都是9位,其中第一帧是7位从机地址+1位读写标识+1位数据接收应答位;后续的每帧都是8位数据+1位数据接收方应答。R/W=0,主机发数据,ACK由从机负责拉低;反之如此。,I2C协议的起止位,8,1.在时钟线高电平时,数据线下降沿代表了起始位START2.在时钟线高电平时,数据线上升沿代表了停止位STOP3.在时钟线高电平期间,数据线上的数据保持稳定4.数据线上的数据只有当时钟线低电平期间才能转换。,I2C的地址规范,7位地址模式,10位地址模式,I2C的多主机仲裁,小地址通信优先,仲裁过程中,多主机时钟实现“线与”功能。,/|/|MSP430F6638100k100kMSP430F6638slave|master-|-|XINP8.5/UCB0SDA|P8.5/UCB0SDAXIN|-|XOUT|XOUT|-|P8.6/UCB0SCL|P8.6/UCB0SCL|,主机在不停地发数据给从机,时钟为1MHz,例1:,#includeunsignedcharTXData;unsignedcharTXByteCtr;voidmain(void)WDTCTL=WDTPW+WDTHOLD;/StopWDTP8SEL|=BIT5+BIT6;/AssignP8.5toUCB0SDAandUCB0SCLP8DIR|=BIT6;/P8.6toUCB0SCLUCB0CTL1=UCSSEL_2+UCSWRST;/UseSMCLK,keepSWresetUCB0CTL0=UCMST+UCMODE_3+UCSYNC;/I2CMaster,synchronousmodeUCB0BR0=10;UCB0BR1=0;UCB0I2CSA=0 x48;/SlaveAddressis048hUCB0CTL1/Incrementdatabyte,主机,#pragmavector=USCI_B0_VECTOR_interruptvoidUSCI_B0_ISR(void)switch(_even_in_range(UCB0IV,12)case0:break;/Vector0:Nointerruptscase2:break;/Vector2:ALIFGcase4:break;/Vector4:NACKIFGcase6:break;/Vector6:STTIFGcase8:break;/Vector8:STPIFGcase10:break;/Vector10:RXIFGcase12:/Vector12:TXIFGif(TXByteCtr)/CheckTXbytecounterUCB0TXBUF=TXData;/LoadTXbufferTXByteCtr-;/DecrementTXbytecounterelseUCB0CTL1|=UCTXSTP;/I2CstopconditionUCB0IFG,#includevolatileunsignedcharRXData;voidmain(void)WDTCTL=WDTPW+WDTHOLD;/StopWDTP8SEL|=BIT5+BIT6;/AssignP8.5/6toUCB0SDAandUCB0SCLUCB0CTL1|=UCSWRST;/EnableSWresetUCB0CTL0=UCMODE_3+UCSYNC;/I2CSlave,synchronousmodeUCB0I2COA=0 x32;/OwnAddressis032hUCB0CTL1/EnterLPM0,enableinterrupts,从机,#pragmavector=USCI_B0_VECTOR_interruptvoidUSCI_B0_ISR(void)switch(_even_in_range(UCB0IV,12)case0:break;/Vector0:Nointerruptscase2:break;/Vector2:ALIFGcase4:break;/Vector4:NACKIFGcase6:break;/Vector6:STTIFGcase8:break;/Vector8:STPIFGcase10:/Vector10:RXIFGRXData=UCB0RXBUF;/GetRXdata_bic_SR_register_on_exit(LPM0_bits);/ExitLPM0break;case12:break;/Vector12:TXIFGdefault:break;,/|/|MSP430G2xx3100k100kMSP430G2xx3slave|master-|-|XINP1.7/UCB0SDA|P1.7/UCB0SDAXIN|-|-|XOUT|XOUT|-|P1.6/UCB0SCL|P1.6/UCB0SCL|,主机在不停地发数据给从机,时钟为1MHz,例2:,#include主机unsignedcharTXData;unsignedcharTXByteCtr;intmain(void)WDTCTL=WDTPW+WDTHOLD;P1SEL|=BIT6+BIT7;P1SEL2|=BIT6+BIT7;UCB0CTL1|=UCSWRST;UCB0CTL0=UCMST+UCMODE_3+UCSYNC;UCB0CTL1=UCSSEL_2;UCB0BR0=10;UCB0BR1=0;UCB0I2CSA=0 x48;UCB0CTL1,while(1)TXByteCtr=1;while(UCB0CTL1,#pragmavector=USCIAB0TX_VECTOR_interruptvoidUSCIAB0TX_ISR(void)if(TXByteCtr)/CheckTXbytecounterUCB0TXBUF=TXData;/LoadTXbufferTXByteCtr-;/DecrementTXbytecounterelseUCB0CTL1|=UCTXSTP;/I2CstopconditionIFG2/ExitLPM0,#include从机volatileunsignedcharRXData;intmain(void)WDTCTL=WDTPW+WDTHOLD;P1SEL|=BIT6+BIT7;P1SEL2|=BIT6+BIT7;UCB0CTL1|=UCSWRST;UCB0CTL0=UCMODE_3+UCSYNC;UCB0I2COA=0 x32;UCB0CTL1,#pragmavector=USCIAB0TX_VECTOR_interruptvoidUSCIAB0TX_ISR(void)RXData=UCB0RXBUF;_bic_SR_register_on_exit(CPUOFF);,例3:,TM1638的各个管脚功能说明:,矩阵键盘的读取,LED数码管显示,数码管,显示的数字形式,七段半导体数码显示器(LED),数码管结构,a,b,c,d,e,f,g,h,hgfedcba,高电平,共阴极,hgfedcba,hgfedcba,R8,com,D7D6D5D4D3D2D1D0,段码,字形码,段码:为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段,因此为LED显示器提供的编码正好是一个字节。这些代码通过各段的亮与灭来显示不同字型的,因此称之为段码。,共阴极,D7D6D5D4D3D2D1D0,hgfedcba,hgfedcba,hgfedcba,段码与字形的关系,0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0123450 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,6789AB0 x39,0 x5e,0 x79,0 x71,0 x00CDEF无显示,+5V,hgfedcba,共阳极,com,R8,abcdefgh某段为低电平时该段点亮发光,D7D6D5D4D3D2D1D0,段码,共阳极,段码与字形的关系,0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0123450 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,6789AB0 xc6,0 xa1,0 x86,0 x8e,0 xffCDEF无显示,动态显示,动态显示的特点:是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。当需要显示数字或字符时,将数码管轮流点亮,即动态扫描显示。所谓动态扫描显示:即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。,图八位LED动态显示器电路,#includeTM1638.hconstuint8_ttab2=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71;voidTM1638_Write(unsignedcharDATA)/写数据函数unsignedchari;P3DIR|=BIT5;for(i=0;i=1;,unsignedcharTM1638_Read(void)/读数据函数unsignedchari;unsignedchartemp=0;P3DIR,voidWrite_COM(unsignedcharcmd)/发送命令字P3OUT|=BIT4;P3OUT|=BIT2;P3OUT,unsignedcharRead_key(void)unsignedcharc4;unsignedintkey_value=0 x00;unsignedinti;P3OUT|=BIT2;P3OUT,elseif(c0,elseif(c1,voidWrite_DATA(unsignedcharadd,unsignedcharDATA)/指定地址写入数据Write_COM(0 x44);P3OUT,voidWrite_allLED(unsignedcharDATA)unsignedchari;Write_COM(0 x8F);/显示控制Write_COM(0 x40);/数据命令P3OUT,#ifndef_TM1638_H#define_TM1638_H#includemsp430f6638.h#include#defineCPU_F(double)20000000)#define_delay_us(x)_delay_cycles(long)(CPU_F*(double)x/1000000.0)#define_delay_ms(x)_delay_cycles(long)(CPU_F*(double)x/1000.0)#defineDIO_high(P3OUT|=BIT5)#defineDIO_low(P3OUT#endif,参考程序代码,#includeTM1638.h#includemsp430f6638.huint8_tnum8;/各个数码管显示的值uint8_tled_flag8;constuint8_ttab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论