版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、I2C通信,內(nèi)容提要,I2C協(xié)議 I2C通信 I2C應(yīng)用 數(shù)碼管和矩陣鍵盤(pán),MSP430G2553引腳圖,I2C線(xiàn)與,兩條總線(xiàn): 串行時(shí)鐘線(xiàn)SCL和串行數(shù)據(jù)線(xiàn)SDA,兩條總線(xiàn)都被上拉電阻拉到VCC,線(xiàn)與輸出。,I2C協(xié)議的基本規(guī)范,完整幀包括起始位、地址位、讀寫(xiě)位、應(yīng)答位、數(shù)據(jù)位 、數(shù)據(jù)位、應(yīng)答位.數(shù)據(jù)位、應(yīng)答位、停止位。 從起始位開(kāi)始每幀數(shù)據(jù)都是9位,其中第一幀是7位從機(jī)地址+1位讀寫(xiě)標(biāo)識(shí)+1位數(shù)據(jù)接收應(yīng)答位;后續(xù)的每幀都是8位數(shù)據(jù)+1位數(shù)據(jù)接收方應(yīng)答。 R/W=0,主機(jī)發(fā)數(shù)據(jù),ACK由從機(jī)負(fù)責(zé)拉低;反之如此。,I2C協(xié)議的起止位,8,1.在時(shí)鐘線(xiàn)高電平時(shí),數(shù)據(jù)線(xiàn)下降沿代表了起始位START
2、 2.在時(shí)鐘線(xiàn)高電平時(shí),數(shù)據(jù)線(xiàn)上升沿代表了停止位STOP 3.在時(shí)鐘線(xiàn)高電平期間,數(shù)據(jù)線(xiàn)上的數(shù)據(jù)保持穩(wěn)定 4.數(shù)據(jù)線(xiàn)上的數(shù)據(jù)只有當(dāng)時(shí)鐘線(xiàn)低電平期間才能轉(zhuǎn)換。,I2C的地址規(guī)范,7位地址模式,10位地址模式,I2C的多主機(jī)仲裁,小地址通信優(yōu)先,仲裁過(guò)程中,多主機(jī)時(shí)鐘實(shí)現(xiàn)“線(xiàn)與”功能。,/| /| MSP430F6638 100k 100k MSP430F6638 slave | | master - | | - |XIN P8.5/UCB0SDA| |P8.5/UCB0SDA XIN|- | | | | | |XOUT | | | XOUT|- | P8.6/UCB0SCL|P8.6/UCB0S
3、CL | | | | |,主機(jī)在不停地發(fā)數(shù)據(jù)給從機(jī),時(shí)鐘為1MHz,例1:,#include unsigned char TXData; unsigned char TXByteCtr; void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT P8SEL |= BIT5+BIT6; / Assign P8.5 to UCB0SDA and UCB0SCL P8DIR |= BIT6; / P8.6 to UCB0SCL UCB0CTL1 = UCSSEL_2 + UCSWRST; / Use SMCLK, keep SW reset UCB0C
4、TL0 = UCMST + UCMODE_3 + UCSYNC; / I2C Master, synchronous mode UCB0BR0 = 10; UCB0BR1 = 0; UCB0I2CSA = 0 x48; / Slave Address is 048h UCB0CTL1 / Increment data byte ,主機(jī),#pragma vector = USCI_B0_VECTOR _interrupt void USCI_B0_ISR(void) switch(_even_in_range(UCB0IV,12) case 0: break; / Vector 0: No in
5、terrupts case 2: break; / Vector 2: ALIFG case 4: break; / Vector 4: NACKIFG case 6: break; / Vector 6: STTIFG case 8: break; / Vector 8: STPIFG case 10: break; / Vector 10: RXIFG case 12: / Vector 12: TXIFG if (TXByteCtr) / Check TX byte counter UCB0TXBUF = TXData; / Load TX buffer TXByteCtr-; / De
6、crement TX byte counter else UCB0CTL1 |= UCTXSTP; / I2C stop condition UCB0IFG ,#include volatile unsigned char RXData; void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT P8SEL |= BIT5+BIT6; / Assign P8.5/6 to UCB0SDA and UCB0SCL UCB0CTL1 |= UCSWRST; / Enable SW reset UCB0CTL0 = UCMODE_3 + UCSYNC;
7、 / I2C Slave, synchronous mode UCB0I2COA = 0 x32; / Own Address is 032h UCB0CTL1 / Enter LPM0, enable interrupts ,從機(jī),#pragma vector = USCI_B0_VECTOR _interrupt void USCI_B0_ISR(void) switch(_even_in_range(UCB0IV,12) case 0: break; / Vector 0: No interrupts case 2: break; / Vector 2: ALIFG case 4: br
8、eak; / Vector 4: NACKIFG case 6: break; / Vector 6: STTIFG case 8: break; / Vector 8: STPIFG case 10: / Vector 10: RXIFG RXData = UCB0RXBUF; / Get RX data _bic_SR_register_on_exit(LPM0_bits); / Exit LPM0 break; case 12: break; / Vector 12: TXIFG default: break; ,/| /| MSP430G2xx3 100k 100k MSP430G2x
9、x3 slave | | master - | | - -|XIN P1.7/UCB0SDA |P1.7/UCB0SDA XIN|- | | | | -|XOUT | | XOUT|- | P1.6/UCB0SCL |P1.6/UCB0SCL | | | | |,主機(jī)在不停地發(fā)數(shù)據(jù)給從機(jī),時(shí)鐘為1MHz,例2:,#include 主機(jī) unsigned char TXData; unsigned char TXByteCtr; int main(void) WDTCTL = WDTPW + WDTHOLD; P1SEL |= BIT6 + BIT7; P1SEL2|= BIT6 + BIT7;
10、 UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; UCB0CTL1 = UCSSEL_2 ; UCB0BR0 = 10; UCB0BR1 = 0; UCB0I2CSA = 0 x48; UCB0CTL1 ,while (1) TXByteCtr = 1; while (UCB0CTL1 ,#pragma vector = USCIAB0TX_VECTOR _interrupt void USCIAB0TX_ISR(void) if (TXByteCtr) / Check TX byte counter UCB0TXBUF =
11、 TXData; / Load TX buffer TXByteCtr-; / Decrement TX byte counter else UCB0CTL1 |= UCTXSTP; / I2C stop condition IFG2 / Exit LPM0 ,#include 從機(jī) volatile unsigned char RXData; int main(void) WDTCTL = WDTPW + WDTHOLD; P1SEL |= BIT6 + BIT7; P1SEL2|= BIT6 + BIT7; UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCMODE_3
12、+ UCSYNC; UCB0I2COA = 0 x32; UCB0CTL1 ,#pragma vector = USCIAB0TX_VECTOR _interrupt void USCIAB0TX_ISR(void) RXData = UCB0RXBUF; _bic_SR_register_on_exit(CPUOFF); ,例3:,TM1638的各個(gè)管腳功能說(shuō)明:,矩陣鍵盤(pán)的讀取,LED數(shù)碼管顯示,數(shù) 碼 管,顯示的數(shù)字形式,七段半導(dǎo)體數(shù)碼顯示器(LED),數(shù)碼管結(jié)構(gòu),a,b,c,d,e,f,g,h,h g f e d c b a,高電平,共陰極,h g f e d c b a,h g f
13、e d c b a,R8,com,D7 D6 D5 D4 D3 D2 D1 D0,段碼,字形碼,段碼:為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段,因此為L(zhǎng)ED顯示器提供的編碼正好是一個(gè)字節(jié)。這些代碼通過(guò)各段的亮與滅來(lái)顯示不同字型的,因此稱(chēng)之為段碼。,共陰極,D7 D6 D5 D4 D3 D2 D1 D0,h g f e d c b a,h g f e d c b a,h g f e d c b a,段碼與字形的關(guān)系,0 x3f , 0 x06 , 0 x5b , 0 x4f , 0 x66 , 0 x6d , 0 1 2 3 4 5 0 x7d , 0 x
14、07 , 0 x7f , 0 x6f , 0 x77 , 0 x7c , 6 7 8 9 A B 0 x39 , 0 x5e , 0 x79 , 0 x71 , 0 x00 C D E F 無(wú)顯示,+5V,h g f e d c b a,共陽(yáng)極,com,R8,a b c d e f g h 某段為低電平時(shí) 該段點(diǎn)亮發(fā)光,D7 D6 D5 D4 D3 D2 D1 D0,段碼,共陽(yáng)極,段碼與字形的關(guān)系,0 xc0 , 0 xf9 , 0 xa4 , 0 xb0 , 0 x99 , 0 x92 , 0 1 2 3 4 5 0 x82 , 0 xf8 , 0 x80 , 0 x90 , 0 x88 ,
15、 0 x83 , 6 7 8 9 A B 0 xc6 , 0 xa1 , 0 x86 , 0 x8e , 0 xff C D E F 無(wú)顯示,動(dòng)態(tài)顯示,動(dòng)態(tài)顯示的特點(diǎn):是將所有位數(shù)碼管的段選線(xiàn)并聯(lián)在一起,由位選線(xiàn)控制是哪一位數(shù)碼管有效。當(dāng)需要顯示數(shù)字或字符時(shí),將數(shù)碼管輪流點(diǎn)亮,即動(dòng)態(tài)掃描顯示。 所謂動(dòng)態(tài)掃描顯示:即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。,圖 八位LED動(dòng)態(tài)顯示器電路,#include TM1638.h const uint8_t tab2 = 0 x3F,0 x06,0 x5B,0 x4F,0 x66,
16、0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71; void TM1638_Write(unsigned char DATA) /寫(xiě)數(shù)據(jù)函數(shù) unsigned char i; P3DIR |= BIT5; for(i=0;i=1; ,unsigned char TM1638_Read(void) /讀數(shù)據(jù)函數(shù) unsigned char i; unsigned char temp=0; P3DIR ,void Write_COM(unsigned char cmd) /發(fā)送命令字 P3OUT |= BIT4; P
17、3OUT |= BIT2; P3OUT ,unsigned char Read_key(void) unsigned char c4; unsigned int key_value=0 x00; unsigned int i; P3OUT |= BIT2; P3OUT ,else if(c0 ,else if(c1 ,void Write_DATA(unsigned char add,unsigned char DATA) /指定地址寫(xiě)入數(shù)據(jù) Write_COM(0 x44); P3OUT ,void Write_allLED(unsigned char DATA) unsigned char
18、 i; Write_COM(0 x8F);/顯示控制 Write_COM(0 x40); /數(shù)據(jù)命令 P3OUT ,#ifndef _TM1638_H #define _TM1638_H #include msp430f6638.h #include #define CPU_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) #define DIO_high (P3OUT |= BIT5) #define DIO_low (P3OUT #endif,參考程序代碼,#include TM1638.h #include msp430f6638.h uint8_t num8; /各個(gè)數(shù)碼管顯示的值 uint8_t led_flag8; const uint8_t tab = 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 x5
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆克孜勒蘇柯?tīng)柨俗巫灾沃?025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試物理試卷(無(wú)答案)
- 遼寧省朝陽(yáng)市2025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試地理試卷(含答案)
- 湖南省衡陽(yáng)市衡陽(yáng)縣2025-2026學(xué)年高二上學(xué)期期末質(zhì)量檢測(cè)(創(chuàng)新實(shí)驗(yàn)班)生物試卷(含答案)
- 化工作業(yè)安全培訓(xùn)
- 沿海公共航路指南2026
- 化工企業(yè)安全生產(chǎn)培訓(xùn)課件
- 飛行事故預(yù)防培訓(xùn)課件
- 鋼結(jié)構(gòu)節(jié)能減排技術(shù)措施
- 2026山東事業(yè)單位統(tǒng)考臨沂市郯城縣招聘綜合類(lèi)崗位29人備考考試試題及答案解析
- 2026浙江寧波市升力同創(chuàng)科技咨詢(xún)服務(wù)有限公司招聘1人參考考試題庫(kù)及答案解析
- 安裝水管安全協(xié)議合同
- 中國(guó)郵政集團(tuán)公司戰(zhàn)略合作協(xié)議書(shū)范本
- 重慶市渝北區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期語(yǔ)文期末試卷(含答案)
- 2024子宮內(nèi)膜癌分子分型臨床應(yīng)用中國(guó)專(zhuān)家共識(shí)(完整版)
- 《煤礦低濃度瓦斯管道輸送安全保障系統(tǒng)設(shè)計(jì)規(guī)范》
- 換電柜維護(hù)培訓(xùn)課件
- 土石方工程掛靠合同
- 招聘會(huì)會(huì)展服務(wù)投標(biāo)方案(技術(shù)標(biāo) )
- 企業(yè)標(biāo)準(zhǔn)-格式模板
- 軟件售后服務(wù)人員提成方案附表
- 五年級(jí)上冊(cè)道德與法治期末測(cè)試卷新版
評(píng)論
0/150
提交評(píng)論