核心版本:linux-2.6.32.2 實驗平台:mini2440
1. 新增平台裝置支援
s3c2440有兩個spi主控制器,這裡只以spi0為例,平台裝置定義如下(plat-s3c24xx/devs.c):
/* spi (0) */
static struct resource s3c_spi0_resource = ,
[1] =
};static u64 s3c_device_spi0_dmamask = 0xfffffffful;
struct platform_device s3c_device_spi0 =
};export_symbol(s3c_device_spi0);
那麼在註冊這個平台裝置之前,需要為平台裝置定義好一組資料,定義如下(mach-s3c2440/mach-mini2440.c):
static struct s3c2410_spi_info mini2440_spi0_platdata = ;
結構struct s3c2410_spi_info定義在檔案mach-s3c2410/include/mach/spi.h中,定義如下:struct s3c2410_spi_info ;
pin_cs:從裝置片選訊號線,由主控制器決定從裝置是否可用,從而使得乙個spi主控制器對應多個從裝置成為可能,但是不清楚為什麼定義在該結構中,而且只有乙個。
num_cs:片選訊號線數量。
bus_num:spi控制器匯流排號。
gpio_setup:配置gpio口的函式指標。
set_cs:用於使能片選的函式指標。
再來看mini2440中對spi0的定義。
pin_cs:使用的gpg2引腳。
num_cs:片選訊號線數量為1。
bus_num:使用的是匯流排spi0。
gpio_setup,使用的函式是s3c24xx_spi_gpiocfg_bus0_gpe11_12_13,函式如下(plat-s3c24xx/spi-bus0-gpe11_12_13.c):
void s3c24xx_spi_gpiocfg_bus0_gpe11_12_13(struct s3c2410_spi_info *spi,
int enable)
else
}
因為gpe11、gpe12和gpe13是多功能引腳,即可作為普通gpio口來使用,也可作為spi控制來使用,所以需要對其做配置。這裡在使能配置時,首先將gpio口配置成spi控制器,然後取消gpe11和gpe13的上拉。
set_cs未被設定。
將這組平台裝置資料賦值給平台裝置:
s3c_device_spi0.dev.platform_data = &mini2440_spi0_platdata;
將s3c_device_spi0這個平台裝置新增到mini2440_devices這個陣列中,以便完成平台裝置的註冊:static struct platform_device *mini2440_devices __initdata = ;
最後別忘了需要包含標頭檔案
2. 核心配置
在配置之前,需要先修改plat-s3c24xx/kconfig,patch如下:
diff --git a/arch/arm/plat-s3c24xx/kconfig b/arch/arm/plat-s3c24xx/kconfig
index 9c7aca4..b877cd9 100644
--- a/arch/arm/plat-s3c24xx/kconfig
+++ b/arch/arm/plat-s3c24xx/kconfig
@@ -129,7 +129,7 @@ config s3c24xx_adc
# spi default pin configuration code
config s3c24xx_spi_bus0_gpe11_gpe12_gpe13
- bool
+ bool "spi0 pin configuration"
help
spi gpio configuration code for bus0 when connected to
gpe11, gpe12 and gpe13.
然後配置核心:
system type --->[*] spi0 pin configuration
device drivers --->
[*] spi support --->
<*> samsung s3c24xx series spi
S3C2440的SPI控制器
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!s3c2440包含有兩個序列外圍裝置介面 spi口 每個spi口都有兩個分別用於傳送和接收的8位移位暫存器,在一次spi通訊當中資料被同步傳送 序列移出 和接收 序列移入 8位序列資料的速率由相關的控制暫存器的內容決定。如果只想傳送,接收到的是一些...
模擬舵機學習(c8t6主控制器)
prescler hclk 在時鐘配置頁面有 1 mhz counter period 預分頻值,計算方式在最下面 核心 1 hal tim base start it htim14 開啟定時器14中斷 2 hal tim pwm start htim14,tim channel 1 開啟14中斷的...
S3C2440 LCD控制器描述
arm嵌入式 2010 06 04 11 35 19 閱讀81 字型大小 大 中小訂閱 系統結構框圖 lcd控制器系統框圖 資料流描述如下 fifo儲存器位於lcdcdma。當fifo空或部分空時,lcdcdma要求從基於突發傳輸模式的幀儲存器中取來資料,存入要顯示的影象資料,而這個幀儲存器是lcd...