




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《嵌入式系統設計原理》STM32F40x的I2C通信模塊原理主講人:賴樹明東莞理工學院05I2C總線控制與應用作業01I2C總線介紹02I2C總線時序03I2C總線時序編程04FT5206觸摸屏驅動示例01I2C總線介紹總線概述總線物理拓撲結構總線通信原理總線特征I2C總線與UART比較I2C總線介紹總線概述01I2C又稱IIC,即Inter-IntegratedCircuit(內部集成電路)。I2C總線是PHLIPS公司推出的一種串行同步通信總線。I2C總線有兩根雙向信號線,一根數據線SDA,另一根時鐘線SCL。簡介I2C總線應用非常廣泛,尤其在傳感器類芯片中,如溫度濕度傳感器、光強傳感器,觸摸屏傳感器、加速度傳感器。應用I2C總線介紹總線物理拓撲結構01拓普結構主從結構,一條總線并聯多個設備,任何一時刻,只能有一個是主機,其他是從機。總線上每個從機都有一個惟一的設備地址,用于供主機尋址。通信只能由主機發起,主機對總線具備有絕對的控制權。IIC設備的接口內部是開漏輸出,無法輸出高電平,在硬件設計中,SDA,SCL線必須有上拉電阻,通過上拉電阻實現高電平輸出,上拉電阻一般在4.7K~100K之間。I2C總線介紹總線通信原理01數據傳輸主機發送起始信號發送從機地址,并指明操作類型(讀或寫)方向位:1表示讀數據,0表示寫數據。等待從機發送應答信號。傳輸數據:如果是寫操作則主機發送數據,如果讀操作,則主機接收數據。應答周期:如果是寫操作,則從機發送應答,如果是讀操作,則主機發送應答。數據傳送完畢后,主機發送停止總線信號。數值傳遞時先發送數據高位,再發送數據低位。傳輸說明I2C總線介紹總線特征01通信只能由主機主動發起,主機對通信過程具備絕對的控制權。I2C總線數據傳輸速率:標準模式可達100kbit/s(所有器件都支持);快速模式可達400kbit/s(大部分器件支持)高速模式可達3.4Mbit/s(少量新型器件支持)數據傳輸只能以字節(8位)為單位進行數據傳輸,先發送高位,再發送低位。同一時刻只能有一個設備是主設備,其他都是從設備,從設備地址是唯一的。通常MCU設備作為主設備,其他作為從設備(有多個MCU時總線會自動仲裁)。I2C設備地址有兩種:7位地址和10位地址,其中7位地址的器件較常見。同一條總線上可以同時有7位地址設備和10位地址設備共存。重要特征I2C總線介紹總線特征01設備地址組成:由固化地址和可編程地址構成:固化地址:芯片出廠就固定了;可編程地址:由使用都硬件設計或軟件配置決定的。示例:At24C02芯片設備地址:地址7位:高4位是固定為1010,這部分地址稱為固化地址
低3位是:A2~A0,可編程地址,由硬件設計決定一條總線上可掛載的設備數量:理論上,只要能保證每個從設備地址惟一,7位地址模式可以掛載127個設備,10位地址掛載1023個設備(0不能用于設備地址),但是I2C總線上可掛接的設備數量受總線最大電容400pF限制。思考:一條總線可以接多少個AT24C02?8個!!重要特征I2C總線介紹I2C總線與UART比較01特征對比名稱IIC總線UART通信方式同步、半雙工異步、全雙工數據位長度8位5~8位通信速度標準三種模式(實際上也要可以是極限速度下任何一個速度)很多種(但是一般都有固定的速度)結構主從設備通信不分主設備與從設備02I2C總線通信時序起始和停止條件應答和非應答信號三種通信過程時序波形I2C總線通信時序起始和停止條件時序02空閑狀態:不進行數據傳輸時SDA和SCL狀態,都維持高電平。起始條件:SCL為高電平期間,SDA線由高到低電平,SCL線為低電平。停止條件:SCL為高電平期間,SDA線由低電平到高電平。時序描述時序波形I2C總線通信時序應答和非應答信號02起始條件+8位數據(高位在前)+應答/非應答信號+停止條件。數據位:SCL線為低電平準備數據,SCL線為高電平采集數據。應答/非應答信號:在每傳輸1字節后,跟隨一個應答位:SCL高電平期間,低電平表示應答信號,高電平表示非應答信號。應答信號/非應答信號是由接收方發出,發送方檢測。時序描述主機寫操作I2C總線通信時序三種通信過程02主機:1)發送起始條件
2)
發送7位地址數據(高位在前)+寫方向;3)檢測從機發的
應答/非應答信號;4)有應答時開始發送1字節數據;5)檢測從機發的應答/非應答信號;6)循環執行4,5兩步發送數據;7)發送停止條件,終止本次通信時序描述主機讀操作I2C總線通信時序三種通信過程02主機:1)發送起始條件
2)
發送7位地址數據(高位在前)+讀方向;3)檢測從機發的
應答/非應答信號;4)有應答時開始接收1字節數據;5)發應答信號給從機(不需要更多數據時發送非答應信號);6)循環執行4,5兩步接收數據;7)發送停止條件,終止本次通信時序描述主機讀寫切換I2C總線通信時序三種通信過程02IIC總線允許讀/寫過程中不停止總線而直接重新發送起始條件,來切換讀/寫操作,或重啟總線重復原來的讀寫操作。時序描述03模擬I2C總線時序編程初始化函數起始條件實現停止條件實現發送應答信號實現接收應答信號實現發送一個字節數據接收一個字節數據voidIIC_GpioInit(void){RCC->AHB1ENR|=(1<<1);//PB使能
/*PB8---SCL*/GPIOB->MODER&=~(3<<16);GPIOB->MODER|=(1<<16);//PB8通用輸出
GPIOB->OTYPER|=(1<<8);//輸出開漏
/*PB9---SDA*/GPIOB->MODER&=~(3<<18);GPIOB->MODER|=(1<<18);//PB9通用輸出
GPIOB->OTYPER|=(1<<9);//PB9開漏輸出開漏
GPIOB->PUPDR&=~(3<<18);GPIOB->PUPDR|=(1<<18);//PB9上拉
/*初始化為空閑狀態*/
SCL_H();SDA_H();}模擬I2C總線時序編程初始化函數03使用GPIO模擬IIC總線,IO引腳配置為普通輸入輸出模式(非復用功能)。SCL和SDA引腳配置為開漏輸出。當要讀取數據時動態修改SDA為輸入方向。當要發送數據時動態修改SDA為輸出方向。后面示例以PB8,PB9兩個IO口為例子:
PB8--SCL,PB9--SDA#defineSCL_H()(GPIOB->BSRRL=1<<8)#defineSCL_L()(GPIOB->BSRRH=1<<8)#defineSDA_H()(GPIOB->BSRRL=1<<9)#defineSDA_L()(GPIOB->BSRRH=1<<9)#defineRD_SDA()(!!(GPIOB->IDR&1<<9))代碼實現宏定義GPIO配置時序波形voidIIC_Start(void){SCL_H();//剛開始,IIC總線為高電平
SDA_H();//剛開始,IIC總線為高電平iic_delay();//起始信號的建立時間
SDA_L();//產生下降沿
iic_delay();//起始信號的保持時間
SCL_L();//為后面數據傳輸做準備}相關操作模擬I2C總線時序編程起始條件實現03SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用iic_delay:是滿足I2C時延要求的函數代碼實現時序波形voidIIC_Stop(void){SDA_L();//拉低SDA線SCL_H();//時鐘線準備為高電平
iic_delay();//停止信號的建立時間。
SDA_H();//拉高數據線,產生上升沿。
iic_delay();//延時}相關操作模擬I2C總線時序編程停止條件實現03SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用iic_delay:是滿足I2C時延要求的函數代碼實現時序波形//ack0:表示應答;1:表示非應答voidIIC_send_ack(u8ack){ack?SDA_H():SDA_L();
iic_delay();//延時SCL_H();//穩定數據線數據
iic_delay();//延時
SCL_L();//拉低}模擬I2C總線時序編程發送應答信號實現03相關操作SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用iic_delay:是滿足I2C時延要求的函數時序波形/*備注:返回:0表示應答,1表示非應答*/u8IIC_check_ack(void){u8is_ack=0;SCL_L();//讓從設備準備數據
SDA_H();//釋放SDA線的控制權
iic_delay();//延時
SCL_H();//穩定SDA線數據
is_ack=RD_SDA();//讀數據
iic_delay();SCL_L();//完整周期returnis_ack;//返回應答/非應答}模擬I2C總線時序編程接收應(非)答信號實現03相關操作SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用RD_SDA():讀取SDA線電平狀態宏調用iic_delay:是滿足I2C時延要求的延時函數時序波形//返回:0應答,發送成功;1非應答,發送失敗u8IIC_WriteByte(u8data){u8i,ack;for(i=0;i<8;i++){
//發送數據0或1到SDA線上
(data&0x80)?SDA_H():SDA_L();iic_delay();//延時SCL_H();//穩定數據
iic_delay();//延時SCL_L();//準備發下一位數據。
data<<=1;//移動下一位待發數據}ack=IIC_check_ack();//檢測應答信號returnack;}模擬I2C總線時序編程發送一個字節數據03相關操作SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用iic_delay:是滿足I2C時延要求的延時函數代碼實現要點:時序波形//接收一字節數據,并且發送應答/非應答//參數:ack為1表示發送非應答,為0發送應答//返回:接收到的數據u8IIC_ReadByte(u8ack){u8i,buf=0;SDA_H();//主機釋放SDA數據線
for(i=0;i<8;i++){iic_delay();//延時
SCL_H();buf<<=1;//移出最低位//讀取1bit數據,保存到最低位
buf|=RD_SDA();
iic_delay();//延時
SCL_L();//準備接收下一位數據
}IIC_send_ack(ack);returnbuf;}模擬I2C總線時序編程接收一個字節數據03相關操作SCL_H():拉高SCL線的宏調用SCL_L():是拉低SCL線的宏調用SDA_H():是拉高SDA線的宏調用SDA_L():是拉低DA線的宏調用iic_delay:是滿足I2C時延要求的延時函數代碼實現04FT5206觸摸屏驅動示例(可選內容:學員根據興趣選擇性學習)芯片介紹讀時序分析重要寄存器硬件原理圖分析軟件設計內部框架圖FT5206觸摸屏驅動示例芯片介紹04AFE:觸摸面板接口電路,連接電容觸摸屏面板,用于做觸點數據采集。外部接口電路:I2C,SPI,UART,GPIO,INT,WAKE,/RSTMCU內核:內置一個8051單片機電路核心EAC:電源,時鐘,功耗管理的電路主機接口圖FT5206觸摸屏驅動示例芯片介紹04詳細芯片手冊:FT5x06_DS.pdfFT5206-書簽版.pdfFT5206-書簽版.pdf設備地址FT5x06支持I2CorSPI接口設備地址:由I2CCON控制器內容決定,A[6:4]:固定011,其中A[3:0]是由當前運行的單片機程序決定,本實驗箱使用的FT5X06芯片設備地址是0X38,(二進制:0111000),讀數據發出的地址字節是0x71(二進制:01110001),寫數據發出的地址字節是0x70(二進制:01110000)。FT5206觸摸屏驅動示例芯片介紹04FT5206觸摸屏驅動示例芯片介紹04復位芯片芯片上電需要對它進行復位,保證芯片內部邏輯電平是正確的,復位時序很簡單,只需要拉低REST引用一段時間,然后重新拉高即可。FT5206觸摸屏驅動示例芯片介紹04讀取據方法1FT5206觸摸屏驅動示例芯片介紹04讀取據方法1FT5206觸摸屏驅動示例讀寫序分析04寫數據時序主機與觸摸屏芯片通信流程:起始信號
從機地址+寫方向
檢測應答
發送寄存器地址
檢測應答
循環[發送數據
檢測應答]
發送停止信號FT5206觸摸屏驅動示例讀寫序分析04讀取數據時序主機與觸摸屏芯片通信流程:起始信號
從機地址+寫方向
檢測應答
發送寄存器地址
檢測應答
發送停止信號;起始信號
從機地址+讀方向
檢測應答
循環[讀取數據地址
發送應答]發送停止信號;寄存器說明寄存器名稱:工作模式寄存器(0x00)寄存器作用:該寄存器用于設置FT5206的工作模式。MODE[2:0]用于控制FT5206的工作模式,一般設置為:000b,表示正常工作模式。FT5206觸摸屏驅動示例重要寄存器04寄存器說明寄存器名稱:中斷狀態控制寄存器(0xA4)寄存器作用:該寄存器用于設置FT5206的工作模式。MODE[2:0]用于控制FT5206的工作模式,一般設置為:000b,表示正常工作模式。寄存器說明寄存器名稱:有效觸摸門限控制寄存器(0X80)寄存器作用:該寄存器用于設置FT5206的有效觸摸門限值。該寄存器8位數據都有效,用于設置FT5206有效觸摸的門限值,計算公式為:有效觸摸門限值=T[7:0]*4T[7:0]所設置的值越小,觸摸越靈敏,默認狀態下T[7:0]=70。FT5206觸摸屏驅動示例重要寄存器04寄存器說明寄存器名稱:激活周期控制寄存器(0X88)寄存器作用:該寄存器用于設置FT5206的激活周期。該寄存器只有低4位有效,用于設置FT5206的激活周期。P[3:0]的設置范圍為:3~14,不過建議一般不要小于12。寄存器說明寄存器名稱:
觸摸狀態寄存器(0X02)寄存器作用:寄存器用于讀取FT5206的觸摸狀態。該寄存器只有低4位有效,TD[3:0]的取值范圍是:1~5,表示有多少個有效觸摸點。我們可以根據這個寄存器的值來判斷有效觸摸點的個數,然后通過0X03/0X09/0X0F/0X15和0X1B等寄存器來讀取觸摸坐標數據。FT5206觸摸屏驅動示例重要寄存器04寄存器說明寄存器名稱:觸摸數據寄存器(0X03~0X1E)寄存器作用:這里總共包括20個寄存器,他們是:0X03~0X06、0X09~0X0C、0X0F~0X12、0X15~0X18、0X1B~0X1E。每4個寄存器為1組,表示一個觸摸點的坐標數據,比如0X03~0X06,則表示觸摸點1的坐標數據,其他的以此類推。。FT5206觸摸屏驅動示例重要寄存器04EventFLAG:用于表示觸摸狀態:00按下;01松開;10持續觸摸;11保留。一般我們只需要判斷該狀態為10即可,即持續觸摸狀態,就可以穩定的讀取觸摸坐標數據了。TouchID:觸點ID號,裸機中一般用不到,在Linux系統中使用時比較有用,用于實現觸點追蹤功能。X[11:8]<<8|X[7:0]:是X坐標數據,這些數據以12位的形式表示,分兩個寄存器存儲。Y[11:8]<<8|Y[7:0]:是Y坐標數據,這些數據以12位的形式表示,分兩個寄存器存儲。原理圖說明查看STM32F407物聯網開發平臺-智能網關原理圖.pdf文檔,觸摸屏硬件設置原理圖如下所示:原理圖分析物聯網實驗箱主控與FT5206之間的通訊接口采用IIC接口模式,FT5206的七位器件地址為0X38(寫地址:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貿易約束協議書
- 簽定禁業協議書
- 煙臺大學法學院協議書
- 退賠諒解協議書
- 荒地合作協議書
- 男人分工協議書
- 聘用副總協議書
- 蘇聯撤軍協議書
- 租船傭金協議書
- 菜品保密協議書
- 關愛父母健康知到章節答案智慧樹2023年哈爾濱商業大學
- 陜西全過程工程咨詢服務合同示范文本
- 公路水運工程施工企業(主要負責人和安全生產管理人員)考核大綱及模擬題庫
- 1KV送配電調試報告
- GB/T 5801-2020滾動軸承機制套圈滾針軸承外形尺寸、產品幾何技術規范(GPS)和公差值
- FZ/T 93029-2016塑料粗紗筒管
- 2022年12月山東省普通高中學業水平合格性考試語文仿真模擬試卷C(答題卡)
- 塑膠原料來料檢驗指導書
- 人教版音樂三年級下冊知識總結
- 共點力平衡的應用-完整版PPT
- 系桿拱橋工程測量施工方案
評論
0/150
提交評論