freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

iic設(shè)備驅(qū)動(dòng)程序培訓(xùn)課程-展示頁(yè)

2025-07-16 11:51本頁(yè)面
  

【正文】 器本質(zhì)上是一個(gè)物理設(shè)備,其主要功能是完成IIC總線控制器相關(guān)的數(shù)據(jù)通信:struct i2c_adapter{結(jié)構(gòu)體i2c_driver和i2c_client的關(guān)系較為簡(jiǎn)單,其中i2c_driver表示一個(gè)IIC設(shè)備驅(qū)動(dòng),i2c_client表示一個(gè)IIC設(shè)備。 list_head *address_data。 const //自動(dòng)探測(cè)設(shè)備的回調(diào)函數(shù) i2c_board_info *)。 int (*detect)(struct i2c_client *,int i2c_device_id *id_table。 driver。類似ioctl()函數(shù) //恢復(fù)IIC設(shè)備 int (*resume)(struct i2c_client *,pm_messge_t mesg)。 //關(guān)閉IIC設(shè)備 void (*shutdown)(struct i2c_client *)。 //新類型設(shè)備的移除函數(shù) (*probe)(struct i2c_client *,const struct要么實(shí)現(xiàn)下面5個(gè)。如果不想支持只實(shí)現(xiàn)上面3個(gè)。 __deprecated。 //卸載適配器時(shí)調(diào)用的函數(shù)  int (*detach_client)(struct i2c_client *) int (*detach_adapter)(struct i2c_adapter*)。 //當(dāng)檢測(cè)到適配器時(shí)調(diào)用的函數(shù) //驅(qū)動(dòng)標(biāo)識(shí)ID  unsigned int class。 i2c_driver:structIIC設(shè)備驅(qū)動(dòng)這顯然是地址沖突,解決的辦法是為總線適配器指定一個(gè)ID號(hào),那么新的芯片地址就由總線適配器的ID和設(shè)備地址組成除了地址之外,IIC設(shè)備還有一些重要的注意事項(xiàng):1,i2c_client數(shù)據(jù)結(jié)構(gòu)是描述IIC設(shè)備的“模板”,驅(qū)動(dòng)程序的設(shè)備結(jié)構(gòu)中應(yīng)包含該結(jié)構(gòu)2,adapter指向設(shè)備連接的總線適配器,系統(tǒng)可能有多個(gè)總線適配器。自定義的地址碼只能表示8個(gè)地址,所以同一IIC總線上同一型號(hào)的芯片最多只能掛載8個(gè)。由用戶自己設(shè)置,通常的做法如EEPROM這些器件是由外部I芯片的3個(gè)引腳所組合電平?jīng)Q定的(A0,A1,A2)。設(shè)備地址由讀寫(xiě)位、器件類型和自定義地址組成,如下圖:第7位是R/W位,0表示寫(xiě),2表示讀,所以I2C設(shè)備通常有兩個(gè)地址,即讀地址和寫(xiě)地址類型器件由中間4位組成,這是由半導(dǎo)體公司生產(chǎn)的時(shí)候就已經(jīng)固化了?!          ?/已經(jīng)被發(fā)現(xiàn)的設(shè)備鏈表  struct pletion  released。 list。                 //設(shè)備結(jié)構(gòu)體  int irq?!            ?/指向設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序  struct device           //依附的適配器i2c_adapter,適配器指明所屬的總線  struct //設(shè)備的名稱,最大為20個(gè)字節(jié)  struct                         unsigned short i2c_client{  unsigned short只要連接到SDA和SCL總線上的設(shè)備都可以叫做IIC設(shè)備??偩€層包括CPU中的IIC總線控制器和控制總線通信的方法。i2c_driver、i2c_client屬于設(shè)備層;i2c_algorithm、i2c_adapter屬于總線型。不符合軟件工程代碼復(fù)用,所以對(duì)其層次話:這里簡(jiǎn)單的將IIC設(shè)備驅(qū)動(dòng)分為設(shè)備層、總線層。IICCDS在串行輸出使能IICSTAT[4]為1時(shí),才可以寫(xiě)入;在任何時(shí)間都可以讀出該寄存器的[7:1]表示從機(jī)地址。由上圖可知,IIC控制器主要是由4個(gè)寄存器來(lái)完成所有的IIC操作的。這8位數(shù)據(jù)的前7位表示從機(jī)地址,第8位表示數(shù)據(jù)的傳輸方向。當(dāng)總線空閑時(shí),SDA和SCL信號(hào)都處于高電平。這個(gè)信號(hào)稱為應(yīng)答信號(hào)開(kāi)始信號(hào)和結(jié)束信號(hào)的波形如下圖:主機(jī):IIC總線中發(fā)送命令的設(shè)備,對(duì)于ARM處理器來(lái)說(shuō),主機(jī)就是IIC控制器從機(jī):接受命令的設(shè)備同一時(shí)間只能有一個(gè)主機(jī)占用總線快速模式下可以達(dá)到400kb/s。在選擇一種設(shè)備來(lái)完成特定功能時(shí),這些特點(diǎn)是選擇IIC設(shè)備的重要依據(jù)。IIC設(shè)備通過(guò)這兩條總線連接到處理器的IIC總線控制器上。IIC設(shè)備產(chǎn)生于20世紀(jì)80年代,最初專用與音頻和視頻設(shè)備,現(xiàn)在在各種電子設(shè)備中都廣泛應(yīng)用IIC總線有兩條總線線路,一條是串行數(shù)據(jù)線(SDA),一條是串行時(shí)鐘線(SCL)。IIC設(shè)備驅(qū)動(dòng)程序IIC設(shè)備是一種通過(guò)IIC總線連接的設(shè)備,由于其簡(jiǎn)單性,被廣泛引用于電子系統(tǒng)中。在現(xiàn)代電子系統(tǒng)中,有很多的IIC設(shè)備需要進(jìn)行相互之間通信IIC總線是由PHILIPS公司開(kāi)發(fā)的兩線式串行總線,用于連接微處理器和外部IIC設(shè)備。SDA負(fù)責(zé)數(shù)據(jù)傳輸,SCL負(fù)責(zé)數(shù)據(jù)傳輸?shù)臅r(shí)鐘同步。一種典型的設(shè)備連接如圖:與其他總線相比,IIC總線有很多重要的特點(diǎn)。主要特點(diǎn):1,每一個(gè)連接到總線的設(shè)備都可以通過(guò)唯一的設(shè)備地址單獨(dú)訪問(wèn)2,串行的8位雙向數(shù)據(jù)傳輸,位速率在標(biāo)準(zhǔn)模式下可達(dá)到100kb/s。3,4,片上濾波器可以增加抗干擾能力,保證數(shù)據(jù)的完成傳輸5,連接到一條IIC總線上的設(shè)備數(shù)量只受到最大電容400pF的限制6,它是一個(gè)多主機(jī)系統(tǒng),在一條總線上可以同時(shí)有多個(gè)主機(jī)存在,通過(guò)沖突檢測(cè)方式和延時(shí)等待防止數(shù)據(jù)不被破壞。IIC總線在傳輸數(shù)據(jù)的過(guò)程中有3種類型的信號(hào):開(kāi)始信號(hào)、結(jié)束信號(hào)、和應(yīng)答信號(hào)開(kāi)始信號(hào)(S): 當(dāng)SCL為高電平時(shí),SDA由高電平向低電平跳變,表示將要開(kāi)始傳輸數(shù)據(jù)結(jié)束信號(hào)(P):當(dāng)SCL為高電平時(shí),SDA由低電平向高電平跳變,表示結(jié)束傳輸數(shù)據(jù)響應(yīng)信號(hào)(ACK): 從機(jī)接收到8位數(shù)據(jù)后,在第9個(gè)周期,拉低SDA電平,表示已經(jīng)收到數(shù)據(jù)。主機(jī)向從機(jī)發(fā)送數(shù)據(jù):主機(jī)通過(guò)數(shù)據(jù)線SDA向從機(jī)發(fā)送數(shù)據(jù)。主機(jī)向從機(jī)發(fā)送數(shù)據(jù)的過(guò)程:1,當(dāng)主機(jī)檢測(cè)到總線空閑時(shí),主機(jī)發(fā)出開(kāi)始信號(hào)2,主機(jī)發(fā)送8位數(shù)據(jù)。這時(shí),第8位為0,表示向從機(jī)發(fā)送數(shù)據(jù)3,被選中的從機(jī)發(fā)出響應(yīng)信號(hào)ACK4,從機(jī)傳輸一系列的字節(jié)和響應(yīng)位5,主機(jī)接受這些數(shù)據(jù),并發(fā)出結(jié)束信號(hào)P,完成本次數(shù)據(jù)傳輸IICCON:控制是否發(fā)出ACK信號(hào),是否開(kāi)啟IIC中斷IICSTAT:IICADD:掛載到總線上的從機(jī)地址。IICADD寄存器在串行輸出使能位IICSTAT[4]為0時(shí),才可以寫(xiě)入;在任何時(shí)候可以讀出IICDS:保存將要發(fā)送或者接收到的數(shù)據(jù)。因?yàn)镮IC設(shè)備種類太多,如果每一個(gè)IIC設(shè)備寫(xiě)一個(gè)驅(qū)動(dòng)程序,那么顯得內(nèi)核非常大。理解這兩個(gè)層次的重點(diǎn)是理解4個(gè)數(shù)據(jù)結(jié)構(gòu),這4個(gè)數(shù)據(jù)結(jié)構(gòu)是i2c_driver、i2c_client、i2c_algorithm、i2c_adapter。如下圖:設(shè)備層關(guān)系到實(shí)際的IIC設(shè)備,如芯片AT24C08就是一個(gè)IIC設(shè)備。值得注意的是:一個(gè)系統(tǒng)中可能有很多個(gè)總線層,也就是包含多個(gè)總線控制器;也可能有多個(gè)設(shè)備層,包含不同的IIC設(shè)備由IIC總線規(guī)范可知,IIC總線由兩條物理線路組成,這兩條物理線路是SDA和SCL。一個(gè)IIC設(shè)備由i2c_client數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述:struct flags。       //標(biāo)志位 addr。 //設(shè)備的地址,低7位為芯片地址  char name[I2C_NAME_SIZE]。 i2c_adapter *adapter。 i2c_driver *driver。 dev?!                      ?/設(shè)備申請(qǐng)的中斷號(hào)  struct list_head                //連接到總線上的所有設(shè)備  struct list_head   detected。           //是否已經(jīng)釋放的完成量}。設(shè)備結(jié)構(gòu)體i2c_client中addr的低8位表示設(shè)備地址。自定義類型由低3位組成。A0,A1,A2 就是自定義的地址碼。AT24C08的自定義地址碼如圖:A0,A1,A2接低電平,所以自定義地址碼為0;如果在兩個(gè)不同IIC總線上掛接了兩塊類型和地址相同的芯片,那么這兩塊芯片的地址相同。內(nèi)核中靜態(tài)指針數(shù)組adapters記錄所有已經(jīng)注冊(cè)的總線適配器設(shè)備3,driver是指向設(shè)備驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)程序是在系統(tǒng)檢測(cè)到設(shè)備存在時(shí)賦值的 i2c_driver{  int id。 //驅(qū)動(dòng)的類型  int (*attach_adapter)(struct i2c_adapter *)。 //卸載設(shè)備時(shí)調(diào)用的函數(shù) //以下是一種新類型驅(qū)動(dòng)需要的函數(shù),這些函數(shù)支持IIC設(shè)備動(dòng)態(tài)插入和拔出。要不實(shí)現(xiàn)上面3個(gè)。不能同時(shí)定義 int i2c_device_id *)。 //新類型設(shè)備探測(cè)函數(shù) int (*remove)(struct i2c_client *)。 int (*suspend)(struct //掛起IIC設(shè)備 i2c_client *)。 int (*mand)(struct i2c_client *client,unsigned int cmd,void *arg)。 //使用命令使設(shè)備完成特殊的功能。 struct devcie_driver //設(shè)備驅(qū)動(dòng)結(jié)構(gòu)體 const struct //設(shè)備ID表 kind,struct struct i2c_client_address_data //設(shè)備所在的地址范圍 struct clients。 //指向驅(qū)動(dòng)支持的設(shè)備}。關(guān)系如下圖:IIC總線適配器就是一個(gè)IIC總線控制器,在物理上連接若干個(gè)IIC設(shè)備。 struct module *owner。 //模塊計(jì)數(shù) int id。 //alogorithm的類型, class。 const struct i2c_algorithm *algo。 void *algo_data。 //指向適配器的私有數(shù)據(jù),根據(jù)不同的情況使用方法不同 i2c_client *)。 //設(shè)備client注冊(cè)時(shí)調(diào)用 i2c_client *)。 u8 level。 mutex //對(duì)總線進(jìn)行操作時(shí),將獲得總線鎖 mutex int timeout。 //超時(shí)  int retries。 nr 。 list_head char name[48]。 //適配器名稱 //用于同步的完成量}。 i2c_algorithm{ int i2c_adapter *adap, i2c_msg *msg, int num)。 //傳輸函數(shù)指
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1