rt_thread hc32f460開發(fā)三:spi驅(qū)動移植

RT-Thread 驅(qū)動開發(fā)簡介

RT-Thread驅(qū)動開發(fā)最開始應(yīng)該是要閱讀官方的文檔,理解驅(qū)動的運行原理和使用方法。SPI部分的文檔在這里https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/spi/spi

RT-Thread中驅(qū)動程序的思想有些類似于Kernel或UBoot中驅(qū)動的思路,通常的流程是驅(qū)動主動注冊設(shè)備,應(yīng)用程序查找并打開設(shè)備調(diào)用系統(tǒng)接口完成功能調(diào)用。

開發(fā)要做的工作大致有如下四部分:

1、編寫通用的和板級電路無關(guān)的驅(qū)動代碼drv_spi.c,這部分驅(qū)動盡量覆蓋片內(nèi)外設(shè)的所有通道。

2、編寫板級相關(guān)的代碼,放在board_config.c中,板級初始化的代碼完成初始化具體引腳等功能,通常由RT_USING_XXX這樣的配置宏來控制編譯。

3、修改編譯控制文件和配置選項,把驅(qū)動加入系統(tǒng)中。

4、編寫使用該驅(qū)動的代碼實現(xiàn)驅(qū)動查找和調(diào)用。

drv_adc.c通用驅(qū)動編寫方法

通用驅(qū)動中一般有兩個關(guān)鍵的數(shù)據(jù)結(jié)構(gòu):rt_spi_ops把通過驅(qū)動操作外設(shè)完成功能的代碼注冊到設(shè)備樹中。還有多個自定義數(shù)據(jù)結(jié)構(gòu)用于記錄MCU外設(shè)的配置和運行時所需數(shù)據(jù)。

SPI驅(qū)動代碼結(jié)構(gòu)相對復(fù)雜,主要有兩個函數(shù)完成hc32_spi_configure和hc32_spi_xfer。其中hc32_spi_configure完成SPI外設(shè)的初始化操作,包括配置外設(shè)時鐘,主從模式、3&4線配置、相位和極性、LSB或MSB、數(shù)據(jù)位寬、速率、DMA等外設(shè)特性。hc32_spi_xfer指定上的數(shù)據(jù)傳輸工作,此函數(shù)同時支持polling和dma兩種模式,為了追求高速率一般建議啟用DMA。

板級初始化代碼

板級初始化代碼放在board_config.c中。

修編譯選項并進(jìn)行配置

* 修改ddl_config.h開啟DDL_ADC_ENABLE

* 修改Libaries\SConscript包含hc32f460_spi.c,如果需要dma的話把dma添加到公共部分

* 修改drivers\SConscript包含drv_spi.c

* 修改board\Kconfig增加ADC相關(guān)的配置

* 執(zhí)行menuconfig開啟adc

* 重新生成工程

使用scons --target=mdk5命令重新生成工程。

編寫應(yīng)用代碼查找驅(qū)動并進(jìn)行調(diào)用

1、查找和配置SPI

2、讀取和寫入SPI



開發(fā)資料

HC32F460用戶手冊

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0

HC32F460數(shù)據(jù)手冊

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/46/key/0

HC32F460驅(qū)動庫

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/9

HC32F460驅(qū)動庫幫助

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/8

HC32F460IDE支持包

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/58/key/2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容