軟件-android10twi模塊使用說(shuō)明書(shū)_第1頁(yè)
軟件-android10twi模塊使用說(shuō)明書(shū)_第2頁(yè)
軟件-android10twi模塊使用說(shuō)明書(shū)_第3頁(yè)
軟件-android10twi模塊使用說(shuō)明書(shū)_第4頁(yè)
軟件-android10twi模塊使用說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1.1...........................................11.2......1.1...........................................11.2...........................................11.3適用........................................................ ........ .....................12模塊功能介.........................................2相關(guān)術(shù)語(yǔ)介.........................................222.2.1硬件術(shù)語(yǔ)......................................... 2.2.2術(shù)語(yǔ)......................................... 模塊配置介紹......................................... devicetree默認(rèn)配置................................... board.dts板級(jí)配置.................................... ....... .. config配置.................................... ..源碼模塊結(jié)構(gòu)..... .......

.....

..... 驅(qū)動(dòng)框架介紹......................................... 模塊接口說(shuō) i2c_smbus_write_block_data()............................................ i2c用戶態(tài)調(diào)用接 模塊使用范 ..... 利用i2c-core接口讀寫(xiě)..... TWI設(shè)備.....

.....

...... 調(diào)試節(jié) 調(diào)試工 常見(jiàn)問(wèn) TWI數(shù)據(jù)未完全發(fā) TWI起始信號(hào)無(wú)法發(fā) TWI終止信號(hào)無(wú)法發(fā) TWI傳送超 概編寫(xiě)目介紹A133平臺(tái)上TWI驅(qū)動(dòng)接口與調(diào)試方法,為TWI模塊開(kāi)發(fā)提供參使用范適用于A133/A100平臺(tái)的linux-4.9內(nèi)核平臺(tái) 1.3適 模塊內(nèi)核層以及應(yīng)用層的開(kāi)發(fā) 模塊介模塊功能介1:TWI400Kbps。其中CPUX域的TWI控制器時(shí)鐘源來(lái)自于APB2,CPUS域的R-TWI時(shí)鐘源來(lái)自于APBS。TWI傳輸數(shù)據(jù)的方式包括包傳輸和DMA。A100平臺(tái)支持6TWI,包含4TWI2S_TWI,其中S_TWI0作為與PMU通信使用,該TWI不建議復(fù)用為其他功能。相關(guān)術(shù)語(yǔ)介相關(guān)術(shù)語(yǔ)解釋說(shuō)明 TwoWireInterface,全志平臺(tái)兼I2C標(biāo)準(zhǔn)協(xié)議的總線相關(guān)術(shù) 解釋說(shuō) 全志科技linux開(kāi)發(fā)平 linux內(nèi)核中I2C總線適配器的抽象定義.IIC總線的控制器,在物理上連接若干個(gè)I2C設(shè)備 linux內(nèi)核中I2C總線通信的抽象定義。描述I2C總線適配器與I2C設(shè)備之間的通信方法I2CClient linux內(nèi)核中I2C設(shè)備的抽象定義I2C linux內(nèi)核I2C設(shè)備驅(qū)動(dòng)的抽象定義模塊配置介紹Sunxi硬件平臺(tái)中,TWITWI控制器來(lái)說(shuō),模塊配置類似,本小節(jié)展示A100平臺(tái)上的TWI0控制器配置(其他TWI控制器配置類似。devicetree設(shè)備樹(shù)中存在的是該類所有平臺(tái)的模塊配置,設(shè)備樹(shù)文件的路徑為:kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw10p1.dtsi,TWI總線的設(shè)備樹(shù)配置如下所示:twi@0x05002000{#address-cells=<1>?#size-cells=compatible="allwinner,sun50i- //device_type= //設(shè)備節(jié)點(diǎn)名稱,用于sys_config.fexreg0x00x050020000x0 //TWI0總線寄存器配interrupts=<GIC_SPI7 //TWI0clocks //設(shè)備使用的時(shí)clock-frequency400000>?//TWI0控制器的時(shí)鐘 //TWI0控制器使用的Pin腳名稱,其中default為正常通信時(shí)的引腳配置,sleep為睡眠時(shí)的引腳配pinctrl-0=<&twi0_pins_a>?//TWI0控制器default時(shí)使用的pin腳配置pinctrl-1=<&twi0_pins_b>?//TWI0控制器sleep時(shí)使用的pin腳配置twi_drv_used=<1>? status= //TWI0控制器是否使clk_twi0:{#clock-cellscompatible="allwinner,periph-clk_twi0:{#clock-cellscompatible="allwinner,periph-=""?aliasesaliasessoc_twi0=&twi0?soc_twi1=&twi1?soc_twi2=&twi2?soc_twi3=別名形式為字符串“twi”加連 的數(shù)字,在TWI總線驅(qū)動(dòng)程序中可以通過(guò)函數(shù)獲取對(duì)應(yīng)TWI控制器的數(shù) ,從而區(qū)別每一個(gè)TWI控制器twi0_pins_a,twi0_pins_b的配置文件路徑為kernel/linux-4.9/arch/arm64/boot/dtssunxi/sun50iw10p1-pinctrl.dtsi,具體配置如下所示:twi0_pins_a2:twi0_pins_a2:twi0@0allwinner,pins="PD14",//TWI控制器使用的引allwinner,pname="twi0_scl","twi0_sda"?//TWI控制器的引腳功allwinner,function="twi0"?allwinner,muxsel=<4>?allwinner,drive=allwinner,pull=//引腳功能描//引腳復(fù)用功能配//io驅(qū)動(dòng)電阻狀twi0_pins_b:{allwinner,pins="PD14","PD15"?allwinner,function="io_disabled"?allwinner,muxsel=allwinner,drive=clk_twi0kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw10p1-clk.dtsi,ls=<1>?#size-cells=eeprom@50compatible="atmel,24c16"?//reg //board.dtstwi0_pins_a:{allwinner,pins="PH0","PH1"?allwinner,pname="twi0_scl","twi0_sda"?allwinner,function="twi0"?allwinner,muxsel=<2>?allwinner,drive=allwinner,pull=twi0_pins_b:{allwinner,pins="PH0","PH1"?allwinner,function="io_disabled"?allwinner,muxsel=<7>?allwinnertwi0_pins_a:{allwinner,pins="PH0","PH1"?allwinner,pname="twi0_scl","twi0_sda"?allwinner,function="twi0"?allwinner,muxsel=<2>?allwinner,drive=allwinner,pull=twi0_pins_b:{allwinner,pins="PH0","PH1"?allwinner,function="io_disabled"?allwinner,muxsel=<7>?allwinner,drive=allwinner,pull=twi0:clock-frequency=<400000>?//i2c時(shí)鐘頻率為pinctrl-0=<&twi0_pins_a>?pinctrl-1=<&twi0_pins_b>?status="okay"? TWIDeviceTreeTWI控制器的子節(jié)點(diǎn)。TWI() config (/kernel/linux-4.9,執(zhí)行makeARCH=arm64 首先,選擇DeviceDrivers2:Device?然后,選擇I2Csupport選項(xiàng),進(jìn)入下一級(jí)配置,如下圖所示? 3:I2CI2C接口,選I2Cdeviceinterface,如下圖所4:I2Cdevice隨后,選I2CHardWareBussupport 5:2CHardWareBus選擇SUNXII2Ccontroller選項(xiàng),可選擇直接編譯進(jìn)內(nèi)核,也可編譯成模塊。如下6:SUNXII2C源碼模塊結(jié)I2C總線驅(qū)動(dòng)的源代碼位于內(nèi)核在 下kernel/kernel/linux-├──│├──i2c- //Sunxi平臺(tái)的I2C│├──i2c- //為Sunxi平臺(tái)的I2C│├──i2c-sunxi-test.cSunxi平臺(tái)的i2c設(shè)備測(cè)試代├──i2c-├──i2c-//I2C子系文件, I2C驅(qū)動(dòng)框架介7:TWILinux中I2C體系結(jié)構(gòu)上圖所示,圖中用分割線分成了三個(gè)層用戶空間,包括所有使用I2C設(shè)備的應(yīng)用程硬件,指實(shí)際物理設(shè)備,包括了I2C控制器和I2C其中,Linux內(nèi)核中的I2C驅(qū)動(dòng)程序從邏輯上又可以分為6個(gè)部分I2Cframework提供一種 I2Cslavedevices”的方法。由于這些slavedevices由I2C 控制,因而主要由I2Ccontroller驅(qū)動(dòng)實(shí)現(xiàn)這I2CframeworkI2C總線的技術(shù)細(xì)節(jié),只需要調(diào)用系統(tǒng)的接口,就可以與外部設(shè)備進(jìn)行通信。正常情況下,外部設(shè)備是位于內(nèi)核態(tài)的其它driver(如觸摸屏,攝像頭等等。I2Cframework也通過(guò)字符設(shè)備向用戶空間提供類似的接口,用戶空間程序可以通過(guò)該接口從設(shè)備信息。在I2Cframework,有I2Ccore、I2Cbusses、I2Calgos和I2Cmuxes四個(gè)模塊I2CcoreI2CadapterI2CalgorithmI2CcontrollerI2CclientI2CdriverI2Cslavedevice的功能(對(duì)應(yīng)設(shè)備模型中的device和devicedriver。另外,基I2Csmbus模塊實(shí)現(xiàn)SMBus(SystemManagementBus,系統(tǒng)管理總線)的功能。 6.I2Calgos包含了一些通用的I2Calgorithm,所謂的algorithm,是指I2C協(xié)議的通信方法,用于實(shí)現(xiàn)I2C的read/write指令,一般情況下,都是由硬件實(shí)現(xiàn),不需要特別關(guān)注該 模塊接口說(shuō)頭文頭文 :i2c-源碼位置:i2c-函數(shù)原型:inti2c_transfer(structi2c_adapter*adap,structi2c_msg*msgs,int功能描述:完成I2C總線和I2C設(shè)備之間的一定數(shù)目的 message交互參數(shù)說(shuō)明:adap,指向所屬的I2C總線控制器;msgs,i2c_msg類型的指針;num,表示一次需要處理幾個(gè) 返>0,已經(jīng)處理的msg個(gè)數(shù);<0頭文頭文 :i2c-源碼位置:i2c-函數(shù)原型:inti2c_master_recv(conststructi2c_client*client,char*buf,int功能描述:通過(guò)封裝i2c_transfer()完成一次I2c接收操作參數(shù)說(shuō)明:client,指向當(dāng)前I2C設(shè)備的實(shí)例;buf,用于保存接收到的數(shù)據(jù)緩存;count,數(shù)據(jù)緩存buf的長(zhǎng)度返回值:>0,成功接收的字節(jié)數(shù);<0,失敗頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:inti2c_master_send(conststructi2c_client*client,constchar*buf,int功能描述:通過(guò)封裝i2c_transfer()完成一次I2c發(fā)送操作參數(shù)說(shuō)明:client,指向當(dāng)前I2C從設(shè)備的實(shí)例;buf,要發(fā)送的數(shù)據(jù);count,要發(fā)送的數(shù)據(jù)長(zhǎng)度返回值:>0,成功發(fā)送的字節(jié)數(shù);<0,失敗頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32i2c_smbus_read_byte(conststructi2c_client功能描述:從I2C總線 一個(gè)字節(jié)。( 是通過(guò)i2c_transfer()實(shí)現(xiàn),以下幾個(gè)接口同。)參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備返回值 到的數(shù)據(jù);<0,失 頭頭文 :i2c-源碼位置:i2c-,功能描述:從I2C總線寫(xiě)入一個(gè)字節(jié)參數(shù)說(shuō)明:cn2Cve回值:0,成功;<0,失敗頭文頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8功能描述:從I2C設(shè)備指定偏移 一個(gè)字節(jié)參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備,command,I2C協(xié)議數(shù)據(jù)的第0字節(jié)命令碼(即偏移值)返回值:>0, 到的數(shù)據(jù);<0,失敗頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8command,u8功能描述:從I2C設(shè)備指定偏參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備;command,I2C協(xié)議數(shù)據(jù)的第0字節(jié)命令碼(即偏移值);value,要寫(xiě)入的數(shù)值返回值:0,成功;<0,失敗 頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8功能描述:從I2C設(shè)備指定偏移處 一個(gè)wod數(shù)據(jù)(兩個(gè)字節(jié),適用于I2C設(shè)備寄存器是16位的情況)。參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備;command,I2C協(xié)議數(shù)據(jù)的第0字節(jié)命令碼(即偏移值)返回值 到的數(shù)據(jù);<0,失頭文頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8command,u16功能描述:從I2C設(shè)備指定偏移處寫(xiě)入一個(gè)word數(shù)據(jù)(兩個(gè)字節(jié))參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備,command,I2C協(xié)議數(shù)據(jù)的第0字節(jié)命令碼(即偏移值),value,要寫(xiě)入的數(shù)值返回值:0,成功;<0,失敗頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8command,u8功能描述:從I2C設(shè)備指定偏移 一塊數(shù)據(jù) 返回值:>0, i2c_smbus_write_block_data()頭頭文 :i2c-源碼位置:i2c-函數(shù)原型:s32 onststructi2c_client*client,u8command,u8length,constu8功能描述:從I2C設(shè)備指定偏移處寫(xiě)入一塊數(shù)據(jù)(長(zhǎng)度最大32字節(jié))參數(shù)說(shuō)明:client,指向當(dāng)前的I2C從設(shè)備;command,I2C協(xié)議數(shù)據(jù)的第0字節(jié)命令碼(即偏移值);lengh,要寫(xiě)入的數(shù)據(jù)長(zhǎng)度;values,要寫(xiě)入的數(shù)據(jù)返回值:0,成功;<0,失敗i2c用戶態(tài)調(diào)用接i2c的操作在內(nèi)核中是當(dāng)做字符設(shè)備來(lái)操作的,可以通過(guò)利用文件讀寫(xiě)接口(open,write,read,ioctrl)等操作內(nèi)核中的/dev/i2c-*文件來(lái)?xiàng)l用相關(guān)的接口,i2c相關(guān)的操作定義在i2c-dev.c里面,函函數(shù)原型:staticinti2cdev_open(structinode*inode,structfile功能描述:程序(C語(yǔ)言等)使用open(file)時(shí)調(diào)用的函數(shù)。打開(kāi)一個(gè)i2c設(shè)備,可以像文件讀寫(xiě)的方式往i2c設(shè)備中讀寫(xiě)數(shù)據(jù)參數(shù)說(shuō)明:inode:inode節(jié)點(diǎn);file:file結(jié)構(gòu)體返回值:文件描述函函數(shù)原型:staticssize_ti2cdev_read(structfile*filecharuser*bufsize_tcount,loff_t功能描述:程序(C語(yǔ)言等)調(diào)用read()時(shí)調(diào)用的函數(shù)。像往文件里面讀數(shù)據(jù)一樣從i2c設(shè)備中讀數(shù)據(jù)。底層調(diào)用i2c_xfer傳輸數(shù)據(jù)參數(shù)說(shuō)明:file,file結(jié)構(gòu)體;buf,寫(xiě)數(shù)據(jù)buf;ofset,文件偏移。返回值:成功返 的字節(jié)數(shù),失敗返回負(fù).3函數(shù)原型:staticssize_ti2cdev_write(structfile*fileconstcharuser*buf,size_tcountloff_t功能描述:程序(C語(yǔ)言等)調(diào)用write()時(shí)調(diào)用的函數(shù)。像往文件里面寫(xiě)數(shù)據(jù)一樣往i2c設(shè)備中寫(xiě)數(shù)據(jù)。底層調(diào)用i2c_xfer傳輸數(shù)據(jù)參數(shù)說(shuō)明:file,file結(jié)構(gòu)體;buf,讀數(shù)據(jù)buf;ofset,文件偏移。返回值:成功返回0,失敗返回負(fù)3.2.4函數(shù)函數(shù)原型:staticlongi2cdev_ioctl(structfile*file,unsignedintcmd,unsignedlong功能描述:程序(C語(yǔ)言等)調(diào)用ioctl()時(shí)調(diào)用的函數(shù)。像對(duì)文件管理i/o一樣對(duì)i2c設(shè)備管理。該功能比較強(qiáng)大,可以修改i2c設(shè)備的地址,往i2設(shè)備里面讀寫(xiě)數(shù)據(jù),使用smbus等等,詳細(xì)的可以查閱該函數(shù)。參數(shù)說(shuō)明:fe,femdrg,失敗返回負(fù)數(shù)模塊使用范下面是一個(gè)EEPROM的I2C設(shè)備驅(qū)動(dòng),該設(shè)備只為了驗(yàn)證I2C總線驅(qū)動(dòng),所以其中通過(guò)#define #define .attr={.name=#_name,.mode=0444},.show= }structi2c_clientstaticconststructi2c_device_idat24_ids[]={"24c16",0{/*ENDOFLIST*/MODULE_DEVICE_TABLE(i2c,staticint har*rxdata,int{intstructi2c_msgmsgs[]={.addr=this_client-.flags=.len=.buf={.addr=this_client-.flags=.len=.buf=ret=i2c_transfer(this_client->adapter,msgs,if(ret<pr_info("%si2creadeepromerror:%d\n",func,return}staticint har*txdata,int{intstructi2c_msgmsg[]={.addr=this_client-.flags=.len=.buf=ret=i2c_transfer(this_client->adapter,msg,if(ret<pr_err("%si2cwriteeepromerror:%d\n",func,return}staticssize_tread_show(structkobject*kobj,structkobj_attributechar{intu8rxdata[4]?rxdata[0]=0x1?eeprom_i2c_rxdata(rxdata,printk("rxdata[%d]:0x%x\n",i,}char{intstaticu8txdata[4]={0x1,0xAA,0xBB,printk("txdata[%d]:0x%x\n",i,txdata[i])?}staticstructkobj_attributeread=staticstructkobj_attributewrite=staticconststructattribute*test_attrs[]{&read.attr,staticintat24_probe(structi2c_client*client,conststructi2c_device_id{intthis_client=client?err=sysfs_create_files(&client->dev.kobj,test_attrs)?printk("2..at24_probe\n")?printk("sysfs_create_files}printk("3..at24_probereturn}staticintat24_remove(structi2c_client{return}staticstructi2c_driverat24_driver=.driver=.name=.owner=.probe=.remove=.id_table=staticintinit{printk("%s%d\n",func LINEreturn}staticvoidexit{printkprintk("%s()%d-\n",func,LINE}i2cdevicesinterfaceI2C /dev/i2c-*來(lái)讀寫(xiě)i2cdevicesinterfaceI2C /dev/i2c-*來(lái)讀寫(xiě)i2c設(shè)備#include<sys/ioctl.h>#include<fcntl.h>#include<linux/i2c-dev.h>#include<linux/i2c.h>#defineCHIP"/dev/i2c-1"intmain(){unsignedcharunsignedcharrdaddr[2]={0,0}?/*將要 中的偏移量*/unsignedcharwrbuf[3]={0,0,0x3c}?/*要寫(xiě)的數(shù)據(jù),頭兩字節(jié)為偏移量*/ o,thisisi2ctester\n")?intfd=open(CHIP,if(fd<{printf("opengoto}if(ioctl(fd,I2C_SLAVE_FORCE,CHIP_ADDR)<{/*設(shè) 地址printf("oictl:setslaveaddressgoto}printf("inputacharyouwanttowritetoE2PROM\n")?wrbuf[2]=getchar()?printf("writereturn:%d,writedata:%x\n",write(fd,wrbuf,3),printf("writeaddressreturn:%d\n",write(fd,rdaddr,2))?/*printf("readdatareturn:%d\n",read(fd,&rddata,1))?printf("rddata:%c\n",rddata)?return之前首先設(shè)的偏移量}}調(diào)試節(jié)此節(jié)點(diǎn)文件的功能是打開(kāi)某個(gè)TWI 通道通信過(guò)程的調(diào)試信息。缺省值是-1,不會(huì)打印任何通道的打開(kāi)通道x通信過(guò)程調(diào)試信息的方法 echoechox>關(guān)閉通信過(guò)程調(diào)試信息的方法:echoecho-1>此節(jié)點(diǎn)此節(jié)點(diǎn)文件可以打印出當(dāng)前TWI通道的一些硬件資源信cat此節(jié)點(diǎn)文件可以打印出當(dāng)前 通道的一些運(yùn)行狀態(tài)信息,包括控制器的各寄存器值catcat調(diào)試工i2c-tools是一個(gè)開(kāi)源工具,專門用來(lái)調(diào)I2C設(shè)備??梢詉2c-tools來(lái)獲i2c設(shè)備的相關(guān)信息(默認(rèn)集成在內(nèi)核里面i2c設(shè)備的數(shù)據(jù)。i2c-tools主要是通過(guò)讀寫(xiě)/dev/i2c-*文件獲I2C設(shè)備,所以需要kernel/linux-4.9的configI2Cdeviceinterface節(jié)點(diǎn)打開(kāi),具體的i2c-tools使用方法如下i2cdetecti2cdetect-l//獲取i2c設(shè)備信i2cget-yi2cset-umberi2c-reg//把相關(guān)的i2c設(shè)備數(shù)據(jù)dump出來(lái),如i2cdumpy1umberi2c-regdata_regei2c設(shè)備某個(gè)地址的數(shù)據(jù),如i2cget-y10x50umberi2c-regdata_regedata//往i2c設(shè)備某個(gè)地址寫(xiě)數(shù)據(jù),如i2cset-y10x501常見(jiàn)問(wèn)TWI數(shù)據(jù)未完全發(fā) 問(wèn)題現(xiàn)象 pletexfer。具體的log如下所示[[1658.926643]sunxi_i2c_do_xfer()1936-[1658.926643]sunxi_i2c_do_xfer()1936-pletexfer(status:0x20,devaddr:pletexfer(status:0x48,devaddr:問(wèn)題分析:此錯(cuò)誤表示主控已經(jīng)發(fā)送了數(shù)據(jù)(status0x20時(shí),表示發(fā)SLAVEADDR+READ備無(wú)響應(yīng),應(yīng)該檢查是否未接設(shè)備、接觸不良、設(shè)備損壞和上電時(shí)序不正確導(dǎo)致的設(shè)備未就緒等問(wèn)題。問(wèn)題排查步驟1:通過(guò)設(shè)備樹(shù)里面的配置信息,核對(duì)引腳配置是否正確。每組TWI2:更換TWI總線下的設(shè)備為at24c16,用i2ctools讀寫(xiě)at24c16看看是否成功,成功則表明步驟3:排查設(shè)備是否可以正常工作以及設(shè)備與I2C步驟4:詳細(xì)了解當(dāng)前需要操作的設(shè)備的初始化方法,工作時(shí)序,使用方法,排查因初始化設(shè)備不步驟5:用示波器檢查TWI引腳輸出波形,查看波形是TWI起始信號(hào)無(wú)法發(fā) 問(wèn)題現(xiàn)象:STARTcan’dout!。具體的log如下所示sunxi_i2c_do_xfersunxi_i2c_do_xfer()1865-[i2c1]START TWITWI總線的引腳配置以及時(shí)鐘配置有問(wèn)題排查?步驟1:重新啟動(dòng)內(nèi)核,通過(guò)查看log,分析TWI是否成功初始化,如若存在引腳配置問(wèn)題,應(yīng)核?2TWI-SCKTWI-SDA3.3v電壓3SDASCL3.3V附近(TWI控制器所有;步驟4:核查引腳配置以及clk5:測(cè)PINPIN功能直接設(shè)INPUTys/class/unxi_dump/write狀態(tài)(echo[reg,reg]>/sys/class/sunxi_dump/dump?catdump),看是否匹配。6:測(cè)CLKTWI的CLKgating等打開(kāi)(echo/y/clas/sunxi_dump/write據(jù)(echo[reg],[len]>/sys/class/sunxi_dump/dump),查看寄存器數(shù)據(jù)是否正常。TWI問(wèn)題現(xiàn)象:STOPcan’dout。具體的log如下所示twi_stop()511-[twi_stop()511-[i2c4]STOPcan' sunxi_i2c_core_process()1726-[i2c4]STOPfailed!問(wèn)題分析:此錯(cuò)誤表示TWI無(wú)法發(fā)送終止信號(hào),一般跟TWI總線的引腳配置。應(yīng)該檢查引腳配問(wèn)題排查1TWI-SCKTWI-SDA3.3v電壓步驟2:用萬(wàn)用表量SDA與SCL初始電壓,看電壓是否在3.3V附近(斷開(kāi)此TWI控制器所有;3:測(cè)PINPIN功能直接設(shè)INPUTys/class/unxi_dump/write狀態(tài)(echo[reg,reg]>/sys/class/sunxi_dump/dump?catd

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論