rtt spi驅動總結

2021-10-07 11:24:57 字數 2023 閱讀 9220

首先配置env工具,選擇spi驅動。 spi 一般用4根線表示通訊cs 、mosi、miso、clk.其中降低時鐘頻率,通過片選,可以掛載更多的裝置。另乙個重要的就是cpol,cpha.cpol表示時鐘訊號的起始電平,當cpol等於 0時,起始電平為低電平,當cpol等於1時,起始電平為高電平。cpha表示第幾個時鐘沿獲取資料,當cpha等於0時,表示第乙個時鐘沿獲取資料,當等於1時,表示第二個時鐘沿獲取資料。

1.rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char device_name, gpio_typedef cs_gpiox, uint16_t cs_gpio_pin); 如果是rt-thread/bsp/stm32 目錄下的 bsp, 則可以使用此函式掛載 spi 裝置到匯流排

2.如果是其他bsp的stm32 則使用rt_err_t rt_spi_bus_attach_device(struct rt_spi_device *device,const char *name, const char *bus_name, void *user_data);

下面就此兩個分別兩個示例,目標器件w25q64 匯流排spi2;

使用第乙個

#include

#include

#define w25q_spi_device_name "spi20"

static

intrt_hw_spi_flash_init

(void

)msh_cmd_export

(rt_hw_spi_flash_init, rt_hw_spi_flash_init)

;static

void

spi_w25q_sample()

;/* 查詢 spi 裝置獲取裝置控制代碼 */

spi_dev_w25q =

(struct rt_spi_device *

)rt_device_find

(w25q_spi_device_name);if

(!spi_dev_w25q)

else

}int

main

(void

)

第二個例子

#include

#include

#include

#include

"string.h"

#define spi_bus_name "spi2"

/* spi匯流排名稱 */

#define spi_w25q64_device_name "spi20"

/* spi裝置名稱 */

struct stm32_hw_spi_cs

;rt_uint8_t w25x_read_id =

0x90

;static

struct rt_spi_device spi_dev_w25q64;

static

struct stm32_hw_spi_cs spi_cs;

rt_err_t w25q64_write_cmd

(const rt_uint8_t cmd)

;rt_spi_send_then_recv

(&spi_dev_w25q64,

&cmd,

1, id,5)

;rt_kprintf

("use rt_spi_send_then_recv() read w25q id is:%x%x\n"

, id[3]

, id[4]

);}static

intrt_hw_w25q64_config

(void

)/* config spi */

return rt_eok;

}void

test()

intmain()

驅動學習 字元裝置驅動總結

字元裝置是 3 大類裝置 字元裝置 塊裝置和網路裝置 中較簡單的一類裝置,其驅動程式中完成的主要工作是初始化 新增和刪除 cdev 結構體,申請和釋放裝置號,以及填充file operations結構體中的操作函式,實現file operations結構體中的read write 和ioctl 等函...

MOSFET驅動電路總結

中心議題 mos管種類和結構 mos管導通特性 mos開關管損失 mos管驅動 mos管應用電路 在使用mos管設計開關電源或者馬達驅動電路的時候,大部分人都會考慮mos的導通電阻,最大電壓等,最大電流等,也有很多人僅僅考慮這些因素。這樣的電路也許是可以工作的,但並不是優秀的,作為正式的產品設計也是...

Linux驅動學習總結

本人剛學linux驅動不久,把這段時間學習的一些總結體會寫出來,以起到拋磚引玉的作用,根據學習的加深,我會持續寫出來。1.如果要對裝置進行有讀寫控制,字元裝置要實現cdev結構,塊裝置要實現gendisk結構。2.驅動模型提供標準的通用的管理裝置的框架 方法,把我們的驅動按照驅動模型的框架來構造,方...