RT-Thread設(shè)備驅(qū)動開發(fā)指南
定 價:99 元
叢書名:電子與嵌入式系統(tǒng)設(shè)計叢書
- 作者:楊潔 郭占鑫 劉康 熊譜翔 著
- 出版時間:2023/1/1
- ISBN:9787111717454
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.567-62
- 頁碼:344
- 紙張:
- 版次:
- 開本:16
本書由自研開源嵌入式實時操作系統(tǒng)RT-Thread核心開發(fā)者撰寫,專業(yè)性毋庸置疑,系統(tǒng)講解RT-Thread設(shè)備驅(qū)動開發(fā)方法,剖析26種設(shè)備驅(qū)動開發(fā)案例,助力開發(fā)者快速掌握RT-Thread設(shè)備驅(qū)動開發(fā)技能。
本書的內(nèi)容共27章,分為三篇。
基礎(chǔ)篇(第1~11章),先對RT-Thread以及設(shè)備框架進行總體介紹,再分別介紹RT-Thread中常用的設(shè)備,包括串口、I2C、SPI等,適合剛接觸驅(qū)動開發(fā)的人學習。
進階篇(第12~20章),介紹稍復雜一些的外設(shè)驅(qū)動,如SDIO、觸摸、顯示、傳感器、加解密設(shè)備等。
高級篇(第21~27章),介紹一些復雜的驅(qū)動,如網(wǎng)絡、音頻、USB、CAN等,開發(fā)此類設(shè)備驅(qū)動要求開發(fā)者本身對相應的外設(shè)協(xié)議比較熟悉。
各章均配有配套案例,方便讀者動手實踐和參考。
前言
第一篇 基礎(chǔ)篇
第1章 RT-Thread與設(shè)備框架
簡介 2
1.1 RT-Thread概述 2
1.2 RT-Thread I/O設(shè)備框架 5
1.2.1 I/O設(shè)備模型與分類 8
1.2.2 I/O設(shè)備管理接口 10
1.2.3 驅(qū)動編寫流程與規(guī)范 15
1.3 本章小結(jié) 16
第2章 UART設(shè)備驅(qū)動開發(fā) 17
2.1 UART層級結(jié)構(gòu) 18
2.2 創(chuàng)建UART設(shè)備 19
2.3 實現(xiàn)UART設(shè)備的操作方法 20
2.3.1 configure:配置UART
設(shè)備 21
2.3.2 control:控制UART設(shè)備 23
2.3.3 putc:發(fā)送一個字符 26
2.3.4 getc:接收一個字符 27
2.3.5 transmit:數(shù)據(jù)發(fā)送 28
2.4 注冊UART設(shè)備 29
2.5 UART設(shè)備中斷處理 30
2.6 增加DMA模式 32
2.7 驅(qū)動配置 37
2.8 驅(qū)動驗證 38
2.9 本章小結(jié) 39
第3章 PIN設(shè)備驅(qū)動開發(fā) 41
3.1 PIN層級結(jié)構(gòu) 41
3.2 實現(xiàn)PIN設(shè)備的操作方法 42
3.3 注冊PIN設(shè)備 51
3.4 驅(qū)動配置 52
3.5 驅(qū)動驗證 52
3.6 本章小結(jié) 53
第4章 I2C總線設(shè)備驅(qū)動開發(fā) 54
4.1 I2C層級結(jié)構(gòu) 55
4.2 I2C總線設(shè)備結(jié)構(gòu) 55
4.3 硬件I2C總線設(shè)備驅(qū)動開發(fā) 56
4.3.1 實現(xiàn)設(shè)備的操作方法 57
4.3.2 注冊設(shè)備 59
4.3.3 驅(qū)動配置 60
4.3.4 驅(qū)動驗證 61
4.4 軟件I2C總線設(shè)備驅(qū)動開發(fā) 61
4.4.1 實現(xiàn)設(shè)備的操作方法 62
4.4.2 注冊設(shè)備 66
4.5 本章小結(jié) 67
第5章 SPI/QSPI總線設(shè)備驅(qū)動
開發(fā) 68
5.1 SPI/QSPI層級結(jié)構(gòu) 69
5.2 SPI總線設(shè)備驅(qū)動開發(fā) 70
5.2.1 創(chuàng)建SPI總線設(shè)備 70
5.2.2 實現(xiàn)SPI總線設(shè)備的操作
方法 72
5.2.3 注冊SPI總線設(shè)備 76
5.2.4 增加DMA功能 77
5.2.5 實現(xiàn)掛載SPI從設(shè)備功能 80
5.2.6 SPI總線設(shè)備驅(qū)動配置 81
5.2.7 驅(qū)動驗證 82
5.3 QSPI 總線設(shè)備驅(qū)動開發(fā) 83
5.3.1 創(chuàng)建QSPI總線設(shè)備 83
5.3.2 實現(xiàn)QSPI總線設(shè)備的
操作方法 84
5.3.3 注冊QSPI總線設(shè)備 87
5.3.4 實現(xiàn)掛載QSPI從設(shè)備
功能 87
5.3.5 QSPI 總線設(shè)備驅(qū)動配置 89
5.3.6 驅(qū)動驗證 89
5.4 本章小結(jié) 90
第6章 HWTIMER設(shè)備驅(qū)動
開發(fā) 91
6.1 HWTIMER層級結(jié)構(gòu) 91
6.2 創(chuàng)建HWTIMER設(shè)備 92
6.3 實現(xiàn)HWTIMER設(shè)備的操作
方法 93
6.3.1 init:初始化設(shè)備 93
6.3.2 start:啟動設(shè)備 95
6.3.3 stop:停止設(shè)備 96
6.3.4 count_get:獲取設(shè)備
當前值 96
6.3.5 control:控制設(shè)備 97
6.4 注冊HWTIMER設(shè)備 98
6.5 HWTIMER設(shè)備中斷處理 99
6.6 驅(qū)動配置 100
6.7 驅(qū)動驗證 101
6.8 本章小結(jié) 101
第7章 PWM設(shè)備驅(qū)動開發(fā) 102
7.1 PWM層級結(jié)構(gòu) 103
7.2 創(chuàng)建PWM設(shè)備 104
7.3 實現(xiàn)PWM設(shè)備的操作方法 105
7.4 注冊PWM設(shè)備 108
7.5 驅(qū)動配置 109
7.6 驗證與使用 110
7.7 本章小結(jié) 111
第8章 RTC設(shè)備驅(qū)動開發(fā) 112
8.1 RTC層級結(jié)構(gòu) 112
8.2 創(chuàng)建RTC設(shè)備 113
8.3 實現(xiàn)RTC設(shè)備的操作方法 113
8.3.1 為設(shè)備定義操作方法 114
8.3.2 init:初始化設(shè)備 115
8.3.3 get_secs:獲取時間 115
8.3.4 set_secs:設(shè)置時間 116
8.3.5 get_timeval:獲取timeval
結(jié)構(gòu) 117
8.4 注冊RTC設(shè)備 118
8.5 驅(qū)動配置 119
8.6 驅(qū)動驗證 120
8.7 本章小結(jié) 121
第9章 ADC設(shè)備驅(qū)動開發(fā) 122
9.1 ADC層級結(jié)構(gòu) 122
9.2 創(chuàng)建ADC設(shè)備 123
9.3 實現(xiàn)ADC設(shè)備的操作方法 124
9.3.1 enabled:控制ADC
通道 125
9.3.2 convert:轉(zhuǎn)換并獲取ADC
采樣值 125
9.4 注冊ADC設(shè)備 126
9.5 驅(qū)動配置 127
9.6 驅(qū)動驗證 128
9.7 本章小結(jié) 129
第10章 DAC設(shè)備驅(qū)動開發(fā) 130
10.1 DAC層級結(jié)構(gòu) 130
10.2 創(chuàng)建DAC設(shè)備 131
10.3 實現(xiàn)設(shè)備的操作方法 132
10.3.1 enabled:使能DAC
通道 133
10.3.2 disabled:禁止DAC
通道 133
10.3.3 convert:設(shè)置DAC輸出值
并啟動數(shù)模轉(zhuǎn)換 134
10.4 注冊DAC設(shè)備 135
10.5 驅(qū)動配置 136
10.6 驅(qū)動驗證 136
10.7 本章小結(jié) 138
第11章 WDT設(shè)備驅(qū)動開發(fā) 139
11.1 WDT層級結(jié)構(gòu) 139
11.2 創(chuàng)建WDT設(shè)備 140
11.3 實現(xiàn)WDT設(shè)備的操作方法 141
11.3.1 為設(shè)備定義操作方法 141
11.3.2 init:初始化看門狗
設(shè)備 141
11.3.3 control:控制看門狗
設(shè)備 142
11.4 注冊WDT設(shè)備 143
11.5 驅(qū)動配置 144
11.6 驅(qū)動驗證 145
11.7 本章小結(jié) 146
第二篇 進階篇
第12章 SDIO 設(shè)備驅(qū)動開發(fā)148
12.1 SDIO層級結(jié)構(gòu) 148
12.2 實現(xiàn)SDIO設(shè)備的操作方法 149
12.2.1 request:發(fā)送請求 149
12.2.2 set_iocfg:配置SDIO 154
12.2.3 get_card_status:獲取
狀態(tài) 156
12.2.4 enable_sdio_irq:配置
中斷 156
12.3 創(chuàng)建并激活SDIO主機 157
12.4 驅(qū)動配置 159
12.5 驅(qū)動驗證 159
12.6 本章小結(jié) 160
第13章 Touch設(shè)備驅(qū)動開發(fā) 161
13.1 Touch層級結(jié)構(gòu) 161
13.2 GT9147觸摸芯片 162
13.3 創(chuàng)建Touch設(shè)備 162
13.4 實現(xiàn)Touch設(shè)備的操作方法 163
13.4.1 touch_readpoint:讀觸摸點
信息 163
13.4.2 touch_control:控制
設(shè)備 166
13.5 注冊Touch設(shè)備 168
13.6 驅(qū)動配置 169
13.7 驅(qū)動驗證 170
13.8 本章小結(jié) 172
第14章 LCD設(shè)備驅(qū)動開發(fā) 173
14.1 LCD層級結(jié)構(gòu) 173
14.2 創(chuàng)建LCD設(shè)備 174
14.3 實現(xiàn)LCD設(shè)備的操作方法 174
14.3.1 init:初始化LCD設(shè)備 175
14.3.2 control:控制LCD設(shè)備 175
14.4 實現(xiàn)繪圖的操作方法 177
14.4.1 set_pixel:畫點 178
14.4.2 get_pixel:讀取像素點
顏色 178
14.4.3 draw_hline:畫橫線 179
14.4.4 draw_vline:畫豎線 180
14.4.5 blit_line:畫雜色水
平線 181
14.5 注冊LCD設(shè)備 182
14.6 驅(qū)動配置 183
14.7 驅(qū)動驗證 184
14.8 本章小結(jié) 185
第15章 傳感器設(shè)備驅(qū)動開發(fā) 186
15.1 傳感器層級結(jié)構(gòu) 186
15.2 創(chuàng)建傳感器設(shè)備 187
15.3 實現(xiàn)傳感器設(shè)備的操作方法 188
15.3.1 fetch_data:獲取傳感器
數(shù)據(jù) 188
15.3.2 control:控制傳感器
設(shè)備 189
15.4 設(shè)備注冊 191
15.5 驅(qū)動配置 193
15.6 驅(qū)動驗證 194
15.7 本章小結(jié) 195
第16章 MTD NOR設(shè)備驅(qū)動
開發(fā) 196
16.1 MTD NOR層級結(jié)構(gòu) 196
16.2 創(chuàng)建MTD NOR設(shè)備 197
16.3 實現(xiàn)MTD NOR設(shè)備的操作
方法 198
16.3.1 read_id:讀取設(shè)備ID 198
16.3.2 read:從設(shè)備中讀數(shù)據(jù) 199
16.3.3 write:向設(shè)備中寫數(shù)據(jù) 200
16.3.4 erase_block:擦除數(shù)據(jù) 201
16.4 注冊MTD NOR設(shè)備 202
16.5 驅(qū)動配置 204
16.6 驅(qū)動驗證 204
16.7 本章小結(jié) 205
第17章 MTD NAND設(shè)備驅(qū)動
開發(fā) 206
17.1 MTD NAND層級結(jié)構(gòu) 206
17.2 創(chuàng)建MTD NAND設(shè)備 207
17.3 實現(xiàn)MTD NAND設(shè)備的操作
方法 207
17.3.1 read_id:讀取設(shè)備ID 208
17.3.2 read_page:從設(shè)備中讀
數(shù)據(jù) 208
17.3.3 write_page:向設(shè)備中寫
數(shù)據(jù) 210
17.3.4 erase_block:擦除設(shè)備 213
17.4 注冊MTD NAND設(shè)備 214
17.5 驅(qū)動配置 215
17.6 驅(qū)動驗證 216
17.7 本章小結(jié) 217
第18章 脈沖編碼器設(shè)備驅(qū)動
開發(fā)218
18.1 脈沖編碼器層級結(jié)構(gòu) 219
18.2 創(chuàng)建脈沖編碼器設(shè)備 220
18.3 實現(xiàn)脈沖編碼器設(shè)備的操作
方法 220
18.3.1 init:初始化脈沖
編碼器 221
18.3.2 control:控制脈沖
編碼器 222
18.3.3 get_count:獲取編碼器
計數(shù) 223
18.3.4 clear_count:清空編碼器
計數(shù) 224
18.4 注冊脈沖編碼器設(shè)備 224
18.5 脈沖編碼器中斷處理 225
18.6 驅(qū)動配置 226
18.7 驅(qū)動驗證 227
18.8 本章小結(jié) 229
第19章 加解密設(shè)備驅(qū)動開發(fā) 230
19.1 加解密設(shè)備層級結(jié)構(gòu) 230
19.2 創(chuàng)建加解密設(shè)備 231
19.3 實現(xiàn)加解密設(shè)備的操作方法 231
19.3.1 create:創(chuàng)建設(shè)備 232
19.3.2 destroy:銷毀設(shè)備 236
19.3.3 copy:復制上下文 237
19.3.4 reset:復位設(shè)備 239
19.4 注冊加解密設(shè)備 240
19.5 驅(qū)動配置 241
19.6 驅(qū)動驗證 241
19.7 本章小結(jié) 242
第20章 PM設(shè)備驅(qū)動開發(fā)243
20.1 PM層級結(jié)構(gòu) 243
20.2 實現(xiàn)PM設(shè)備的操作方法 244
20.2.1 sleep:切換休眠模式 244
20.2.2 run:切換運行模式 246
20.2.3 timer_start:定時器
啟動 247
20.2.4 timer_get_tick:獲取
時鐘值 248
20.2.5 timer_stop:定時器停止 248
20.3 注冊PM設(shè)備 249
20.4 驅(qū)動配置 250
20.5 驅(qū)動驗證 250
20.6 本章小結(jié) 251
第三篇 高級篇
第21章 WLAN設(shè)備驅(qū)動
開發(fā) 254
21.1 WLAN層級結(jié)構(gòu) 254
21.2 創(chuàng)建WLAN設(shè)備 256
21.3 實現(xiàn)WLAN設(shè)備的操作方法 256
21.3.1 wlan_init:初始化設(shè)備 257
21.3.2 wlan_scan:掃描 258
21.3.3 wlan_get_rssi:獲取信號
強度 258
21.3.4 wlan_cfg_promisc:配置
混雜模式 259
21.3.5 wlan_set_channel:設(shè)置
信道 259
21.3.6 wlan_set_country:設(shè)置
國家碼 260
21.3.7 wlan_send:發(fā)送數(shù)據(jù) 261
21.4 注冊WLAN設(shè)備 261
21.5 驅(qū)動配置 262
21.6 驅(qū)動驗證 263
21.7 本章小結(jié) 264
第22章 ETH設(shè)備驅(qū)動開發(fā) 265
22.1 ETH層級結(jié)構(gòu) 265
22.2 創(chuàng)建ETH設(shè)備 266
22.3 實現(xiàn)ETH設(shè)備的操作方法 267
22.3.1 eth_rx:數(shù)據(jù)接收 268
22.3.2 eth_tx:數(shù)據(jù)發(fā)送 270
22.4 注冊ETH設(shè)備 271
22.5 驅(qū)動配置 272
22.6 驅(qū)動驗證 272
22.7 本章小結(jié) 273
第23章 AUDIO MIC設(shè)備驅(qū)動
開發(fā) 274
23.1 AUDIO層級結(jié)構(gòu) 274
23.2 創(chuàng)建MIC設(shè)備 275
23.3 實現(xiàn)MIC設(shè)備的操作方法 276
23.3.1 getcaps:獲取設(shè)備功能 276
23.3.2 configure:配置設(shè)備 279
23.3.3 init:初始化設(shè)備 281
23.3.4 start:啟動設(shè)備 281
23.3.5 stop:停止設(shè)備 282
23.4 音頻數(shù)據(jù)流處理 282
23.5 注冊MIC設(shè)備 284
23.6 驅(qū)動配置 285
23.7 驅(qū)動驗證 286
23.8 本章小結(jié) 286
第24章 AUDIO SOUND設(shè)備驅(qū)動開發(fā) 287
24.1 創(chuàng)建SOUND設(shè)備 287
24.2 實現(xiàn)SOUND設(shè)備的操作
方法 287
24.2.1 getcaps:獲取設(shè)備功能 288
24.2.2 configure:配置設(shè)備 291
24.2.3 init:初始化設(shè)備 293
24.2.4 start:啟動設(shè)備 293
24.2.5 stop:停止設(shè)備 294
24.2.6 buffer_info:獲取緩沖區(qū)
信息 294
24.3 音頻數(shù)據(jù)流處理 295
24.4 注冊SOUND設(shè)備 297
24.5 驅(qū)動配置 298
24.6 驅(qū)動驗證 299
24.7 本章小結(jié) 300
第25章 USBD設(shè)備驅(qū)動開發(fā) 301
25.1 USBD層級結(jié)構(gòu) 301
25.2 創(chuàng)建USBD設(shè)備 302
25.3 實現(xiàn)USBD設(shè)備的操作方法 303
25.3.1 set_address:設(shè)置USBD
設(shè)備地址 304
25.3.2 set_config:配置USBD
設(shè)備 305
25.3.3 ep_set_stall:設(shè)置端點
STALL狀態(tài) 305
25.3.4 ep_clear_stall:清除端點STALL狀態(tài) 305
25.3.5 ep_enable:使能端點 306
25.3.6 ep_disable:禁用端點 306
25.3.7 ep_read_prepare:端點接收數(shù)據(jù)準備信號 307
25.3.8 ep_read:端點接收數(shù)據(jù) 307
25.3.9 ep_write:端點發(fā)送
數(shù)據(jù) 308
25.3.10 ep0_send_status:通知主機
數(shù)據(jù)傳輸結(jié)束 308
25.3.11 suspend:掛起USBD
設(shè)備 308
25.3.12 wakeup:喚醒USBD
設(shè)備 309
25.4 注冊USBD設(shè)備 309
25.5 USBD中斷處理 311
25.5.1 rt_usbd_ep0_setup_handler:端點0 SETUP回調(diào)函數(shù) 312
25.5.2 rt_usbd_ep0_in_handler:IN令牌包回調(diào)函數(shù) 312
25.5.3 rt_usbd_ep0_out_handler:OUT令牌包回調(diào)函數(shù) 313
25.5.4 其他回調(diào)函數(shù) 313
25.6 驅(qū)動配置 314
25.7 驅(qū)動驗證 315
25.8 本章小結(jié) 315
第26章 USBH設(shè)備驅(qū)動開發(fā) 316
26.1 USBH層級結(jié)構(gòu) 316
26.2 創(chuàng)建USBH設(shè)備 317
26.3 實現(xiàn)USBH設(shè)備的操作方法 318
26.3.1 reset_port:重置端口 318
26.3.2 pipe_xfer:傳輸數(shù)據(jù) 319
26.3.3 open_pipe:開啟傳輸
管道 322
26.3.4 close_pipe:關(guān)閉傳輸
管道 323
26.4 注冊USBH設(shè)備 323
26.5 USBH中斷處理 324
26.5.1 rt_usbh_root_hub_connect_handler:連接成功回調(diào)
函數(shù) 324
26.5.2 rt_usbh_root_hub_disconnect_handler:斷開連接回調(diào)
函數(shù) 325
26.5.3 其他中斷處理 326
26.6 驅(qū)動配置 326
26.7 驅(qū)動驗證 327
26.8 本章小結(jié) 327
第27章 CAN設(shè)備驅(qū)動開發(fā) 328
27.1 CAN層級結(jié)構(gòu) 328
27.2 創(chuàng)建CAN設(shè)備 329
27.3 實現(xiàn)CAN設(shè)備的操作方法 330
27.3.1 configure:配置CAN
設(shè)備 330
27.3.2 control:控制CAN
設(shè)備 331
27.3.3 sendmsg:發(fā)送一幀
數(shù)據(jù) 334
27.3.4 recvmsg:接收一幀
數(shù)據(jù) 336
27.4 CAN中斷處理 337
27.5 注冊CAN設(shè)備 339
27.6 驅(qū)動配置 340
27.7 驅(qū)動驗證 341
27.8 本章小結(jié) 344