DS1621在Linux下的IIC接口驅動(dòng)設計
圖4 驅動(dòng)程序設計流程圖
3.1 設備驅動(dòng)的主要函數
對于字符設備,Linux內核對這些操作進(jìn)行了統一的抽象,把它們定義在結構體file-operation中。通常,字符設備提供給應用程序的是一個(gè)流控制接口,主要包括open、release、read、ioctl等。
3.2 從器件,設備DS1621的初始化代碼
3.3 IIC總線(xiàn)的初始化
對S3C2440的IIC控制器進(jìn)行配置時(shí)需要用到的寄存器有:IICCON、IICSTAT、IICDS、IICADD。
IICCON:IIC總線(xiàn)控制寄存器;IICSTAT:IIC總線(xiàn)控制狀態(tài)寄存器;HCDS:IIC總線(xiàn)接收/發(fā)送數據移位寄存器;IICADD:IIC總線(xiàn)地址寄存器。
1)S3C2440的GPE15為HCSDA,是串行數據線(xiàn)端口,GPE14為IICSCL,是串行時(shí)鐘線(xiàn);
2)將IICCON設置為:0xA7,表示傳輸過(guò)程中ACK應答使能,IIC的工作時(shí)鐘為:HCCLK=fpclk/512,IlC總線(xiàn)中斷使能,數據傳輸的時(shí)鐘為:Tx clock=IICCLK/(IICCON[3:O]+1),約為400 k/s;
3)將IICSTAT置為:0x10,即使用從器件接收數據模式,數據輸出/接收使能。
3.4 主器件從HC總線(xiàn)讀數據
對于DS1621的寄存器配置,當通過(guò)IIC讀取從器件DS1621的數據時(shí),需要切換數據收發(fā)的方向,S3C2440先在主機發(fā)送數據模式下,向從器件DS1621發(fā)送從地址、DS1621內部寄存器的子地址和寫(xiě)信號位,然后在主機接收數據模式下,再次向從器件發(fā)送從地址和讀信號位,并將子地址內的數據讀回,其讀數據操作如圖5所示。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論