版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.6單片機(jī)I2C總線擴(kuò)展技術(shù)賈立新jlx@1.I2C總線及軟件模擬1.I2C總線的定義和特點I2C總線(Inter-Integrated-Circuit)是由Philips公司開發(fā)了一個簡單的、高性能的芯片間串行傳輸總線,由一根數(shù)據(jù)線(SDA)和一根時鐘線(SCL)組成。I2C總線系統(tǒng)擴(kuò)展圖(1)所有I2C總線接口器件都包含了一個片上接口,使器件之間直接通過I2C總線通訊。
1.I2C總線及軟件模擬(2)掛在I2C總線上的器件有主機(jī)和從機(jī)之分。
主機(jī)是指主動發(fā)起一次傳送的器件,它產(chǎn)生起始信號、終止信號和時鐘信號;從機(jī)是指被主器件尋址的器件。
在單片機(jī)系統(tǒng)中,主機(jī)一般由單片機(jī)擔(dān)當(dāng),從機(jī)則為其它器件,如存儲器、A/D轉(zhuǎn)換器、實時時鐘器件等。(3)每個連接到I2C總線的器件都有唯一的地址。主機(jī)在發(fā)出起始信號以后,傳送的第一個字節(jié)總是地址字節(jié),以指示由哪個器件來接收該數(shù)據(jù)。1.I2C總線及軟件模擬(1)數(shù)據(jù)有效位定義:數(shù)據(jù)在時鐘高電平期間保持穩(wěn)定。2.I2C總線基本時序1.I2C總線及軟件模擬(2)起始信號:時鐘信號高電平期間數(shù)據(jù)由高到低切換(3)停止信號:時鐘信號高電平期間數(shù)據(jù)由低到高切換1.I2C總線及軟件模擬(4)應(yīng)答信號1.I2C總線及軟件模擬3.I2C總線數(shù)據(jù)傳送模式模式一:主機(jī)發(fā)送,從機(jī)接收,而且傳輸方向始終不變。
模式二:主機(jī)發(fā)送地址字節(jié)后立即讀從機(jī)數(shù)據(jù)。
模式三:主機(jī)先向從機(jī)寫數(shù)據(jù),再向從機(jī)讀數(shù)據(jù)。
1.I2C總線及軟件模擬4.I2C總線基本時序的軟件模擬(1)I/O引腳的初始化#defineSDA_HIGH()GPIO_SetBits(GPIOB,GPIO_Pin_9) //將SDA置高#defineSDA_LOW()GPIO_ResetBits(GPIOB,GPIO_Pin_9) //將SDA置低#defineSCL_HIGH()GPIO_SetBits(GPIOB,GPIO_Pin_8) //將SCL置高#defineSCL_LOW()GPIO_ResetBits(GPIOB,GPIO_Pin_8) //將SCL置低#defineSDAGPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9) //讀SDA引腳1.I2C總線及軟件模擬(1)I/O引腳的初始化voidI2C_Configuration(void){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOB,&GPIO_InitStructure);}1.I2C總線及軟件模擬(2)啟動信號子程序在SCL高電平期間SDA發(fā)生負(fù)跳變。voidI2Cstart(){ SDA_HIGH(); delay();
SCL_HIGH(); delay();SDA_LOW(); delay();SCL_LOW(); delay();SDA_HIGH();}1.I2C總線及軟件模擬(3)終止信號子程序在SCL高電平期間SDA發(fā)生正跳變。voidI2Cstop(){ SDA_LOW(); delay(); SCL_HIGH(); delay(); SDA_HIGH();}1.I2C總線及軟件模擬(4)發(fā)送應(yīng)答位子程序ACK在SDA低電平期間,SCL發(fā)生一個正脈沖。voidack(){ SDA_LOW(); delay(); SCL_HIGH(); delay(); SCL_LOW(); delay(); SDA_HIGH();delay();}(5)發(fā)送非應(yīng)答位子程序NACK在SDA高電平期間SCL發(fā)生一個正脈沖。voidnack(){ SDA_HIGH(); delay(); SCL_HIGH(); delay(); SCL_LOW(); delay();}1.I2C總線及軟件模擬(6)檢查應(yīng)答位子程序CHECK
在檢查應(yīng)答位子程序中,設(shè)置了標(biāo)志位F0,當(dāng)檢查到正常應(yīng)答位時F0=0,否則,F(xiàn)0=1。voidI2Ccheck(){ F0=0x00; SDA_HIGH(); delay(); SCL_HIGH(); delay(); if(SDA==1)F0=0x01; SCL_LOW(); delay();}1.I2C總線及軟件模擬(7)寫一個字節(jié)數(shù)據(jù)子程序WRBYTEbyte=byte<<1;delay();SCL_HIGH();delay();SCL_LOW();delay();}SDA_HIGH(); }voidI2Cwrbyte(u8byte){u8i;for(i=0;i<8;i++){if((byte&0x80)==0x80){SDA_HIGH();}else{SDA_LOW();}1.I2C總線及軟件模擬(8)讀一個字節(jié)子程序RDBYTEu8I2Crdbyte(){u8i,q,byte=0;for(i=0;i<8;i++){ SDA_HIGH(); SCL_HIGH(); delay();q=SDA;delay();SCL_LOW();byte=byte<<1;if(q==0x01){ byte=byte|0x01;}delay();}returnbyte;}1.I2C總線及軟件模擬2.導(dǎo)線長度測量儀設(shè)計
1.設(shè)計題目設(shè)計一導(dǎo)線長度測量儀,原理框圖如圖所示。圖中Rx表示被測導(dǎo)線。導(dǎo)線采用網(wǎng)線(直徑0.51mm~0.58mm)內(nèi)的銅芯。被測導(dǎo)線的長度范圍為50~100cm,誤差的絕對值不大于1.0cm。2.導(dǎo)線長度測量儀設(shè)計
2.理論分析導(dǎo)線的電阻與長度成正比。通過導(dǎo)線電阻,根據(jù)阻值計算導(dǎo)線長度。導(dǎo)線的長度可以由下式得到:其中,
ρ為銅芯網(wǎng)線的線路電阻系數(shù),L為導(dǎo)線長度,Rx為單片機(jī)測出的導(dǎo)線電阻,R0為除導(dǎo)線外的其它電阻,如接觸電阻等。
2.導(dǎo)線長度測量儀設(shè)計
3.硬件電路設(shè)計2.導(dǎo)線長度測量儀設(shè)計
4.ADS1115的功能框圖和引腳排列
ADS1115內(nèi)部包括模擬開關(guān)、一個∑-△型A/D轉(zhuǎn)換器核、可編程增益放大器PGA、基準(zhǔn)電壓源、時鐘振蕩器和I2C總線接口。2.導(dǎo)線長度測量儀設(shè)計
ADS1115以二進(jìn)制補(bǔ)碼格式提供16位數(shù)據(jù),正滿量程輸入產(chǎn)生7FFFH的輸出代碼,負(fù)滿量程輸入產(chǎn)生8000H的輸出代碼。ADS1115有一個地址引腳ADDR配置器件的I2C地址。當(dāng)ADDR引腳接地時,器件地址為1001000。PGA設(shè)置滿量程輸入/VPGA設(shè)置滿量程輸入/V2/3±6.1444±1.0241±4.0968±0.5122±2.04816±0.2562.導(dǎo)線長度測量儀設(shè)計
5.軟件設(shè)計2.導(dǎo)線長度測量儀設(shè)計
無論是啟動A/D轉(zhuǎn)換還是讀取A/D轉(zhuǎn)換值,單片機(jī)都是通過I2C接口訪問ADS1115內(nèi)部寄存器實現(xiàn)的。與本設(shè)計相關(guān)的寄存器有以下3個:(1)指針寄存器(PointerRegisterByte)該寄存器只能寫,用最低兩位D1~D0來選擇后續(xù)要訪問的寄存器:00:轉(zhuǎn)換寄存器;01:配置寄存器;10:低閾值寄存器;11:高閾值寄存器(2)轉(zhuǎn)換寄存器該寄存器只能讀,用于存放16位轉(zhuǎn)換結(jié)果。2.導(dǎo)線長度測量儀設(shè)計
(3)配置寄存器配置寄存器配置值配置字位配置值功能說明D151啟動一次A/D轉(zhuǎn)換D14~D12111AINP=AIN3,AINN=GNDD11~D9100PGA=8,滿量程電壓=0.512VD81單次轉(zhuǎn)換D7~D5100轉(zhuǎn)換速率=128SPSD4~D000011禁止內(nèi)部窗口比較器,降低功耗2.導(dǎo)線長度測量儀設(shè)計
(1)啟動A/D轉(zhuǎn)換子程序voidWrite_AD_AIN3(){I2Cstart(); //發(fā)送起始位I2Cwrbyte(0x90); //送器件地址(寫)I2Ccheck(); //等待應(yīng)答I2Cwrbyte(0x01); //寫指針寄存器,指向配置寄存器I2Ccheck(); //等待應(yīng)答I2Cwrbyte(0xF9); //寫配置字高字節(jié)I2Ccheck(); //等待應(yīng)答I2Cwrbyte(0x83); //寫配置字低字節(jié)I2Ccheck(); //等待應(yīng)答I2Cstop(); //發(fā)送停止位}2.導(dǎo)線長度測量儀設(shè)計
(2)讀A/D轉(zhuǎn)換值子程序voidRead_AD(){
u8adcdath,adcdatl;I2Cstart();I2Cwrbyte(0x90); //發(fā)送器件地址(寫)I2Ccheck();//等待應(yīng)答I2Cwrbyte(0x00);//寫配置寄存器指針,指向轉(zhuǎn)換寄存器I2Ccheck();//等待應(yīng)答I2Cstop();I2Cstart(); //再次發(fā)起始位I2Cwrbyte(0x91); //發(fā)送器件地址(讀)I2Ccheck();adcdath=I2Crdbyte();//讀轉(zhuǎn)換結(jié)果高字節(jié)ack();adcdatl=I2Crdbyte();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館文獻(xiàn)資源宣傳推廣制度
- 2025年全國市場監(jiān)督管理法律知識競賽測試題庫(含答案解析)
- 規(guī)范收費(fèi)管理制度
- 規(guī)范合法行醫(yī)制度
- 美妝企業(yè)制度規(guī)范
- 發(fā)電廠夜班制度規(guī)范
- 方艙搶救室制度規(guī)范
- 如何規(guī)范防造假制度
- 宿舍合法制度規(guī)范
- 規(guī)范財產(chǎn)保全擔(dān)保制度
- 2024版裝修公司軟裝合同范本
- IABP主動脈球囊反搏課件
- 加壓站清水池建設(shè)工程勘察設(shè)計招標(biāo)文件
- 工會制度匯編
- 喪假國家規(guī)定
- 2023年醫(yī)務(wù)科工作計劃-1
- 乒乓球社團(tuán)活動記錄
- 地基與基礎(chǔ)分項工程質(zhì)量驗收記錄
- 一文多用作文課公開課課件
- 水運(yùn)工程施工課程設(shè)計指導(dǎo)書
- 驚恐障礙診治課件
評論
0/150
提交評論