RK3288 LED驱动编写准备
3288LED驅動編寫
- 1、LED硬件知識
- 2、GPIO的一般結構
- 3、普通的GPIO設置方法
- 4、GPIO寄存器的操作方法
- 5、3288的GPIO操作方法
- 5.1 怎么寫LED驅動程序?
- 5.2 3288原理圖
- 5.3 3288寄存器手冊
1、LED硬件知識
LED驅動方式常見的有四種:
- 方式1:使用引腳輸出3.3v點亮LED,輸出0v熄滅LED。
- 方式2:使用引腳拉低到0v點亮LED,輸出3.3v熄滅LED。
有些情況下,如引腳輸出能力不足,省電等原因,使用三極管驅動。 - 方式3:使用引腳輸出1.2v驅動三極管點亮LED,輸出0v熄滅LED。
- 方式4:使用引腳輸出0v點亮LED,輸出1.2v熄滅LED。
從軟件控制的角度講,有輸出高點壓驅動LED,也有輸出低電壓驅動LED的。具體要看電路設計。
2、GPIO的一般結構
3、普通的GPIO設置方法
4、GPIO寄存器的操作方法
寄存器有兩種操作方法,主要的原則是不能影響到其他位。
- val = data_reg
- val = val | (1 << n);
- data_reg = val;
- set_reg、clr_reg、data_reg三個寄存器對應的是同一個物理寄存器。
- 要設置bit n: set_reg = (1 << n);
- 要清除bit n:clr_reg = (1 << n);
5、3288的GPIO操作方法
5.1 怎么寫LED驅動程序?
5.2 3288原理圖
- GPIO:General-Purpose Input/Output,通用的輸入輸出口
- CRU:Clock & Reset Unit,使用和復位單元 通過CRU使能某一個GPIO模塊
- PMU:Power Managerment Unit,電源管理單元 有設置GPIO0的功能寄存器
- GRF:General Register Files,通用寄存器文件 設置GPIO1~8的功能寄存器
板上的晶振時鐘通過,GENERAL PLL倍頻,通過選擇器進入GeNERAL_MUX_CLK。GENERAL_MUX_CLK通過分頻,一路給了PD_ALIVE,一路給了PD_PMU。PD_ALIVE提供GPIO1~8的時鐘,PD_PMU提供GPIO0的時鐘。3
基地址:在手冊里overwrite里,有各個模塊的memory map,里面有各個模塊的基地址。
5.3 3288寄存器手冊
想要驅動3288的led,就應該去找芯片手冊上對應的章節來看。需要學習三個章節(CRU、PMU、CRF、GPIO)才能有一個整體的認識。
3288 分為GPIO0 ~ 8 9組 的GPIO0小組里面有A0 ~ A7、B0 ~ B7、C0 ~ C7 、 D0 ~ D7每一組有32個GPIO pin。
每一組的GPIO有Data 寄存器、Data Dir 寄存器、Ext Data寄存器。
當需要使用GPIO時,xxx寄存器設置方向寄存器輸出或輸入, xxx寄存器設置點位,xxx寄存器設置其他復用功能。
有些芯片的GPIO是沒有使能GPIO模塊的。 ??
在芯片手冊中確定的寄存器地址被稱為物理地址,在Linux內核中無法直接使用。需要使用內核提供的ioremap把物理地址映射成虛擬地址。 ??
工作中如果要找時鐘,我覺得應該從下面找起,依次按著名字往上找。 ??
總結
以上是生活随笔為你收集整理的RK3288 LED驱动编写准备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPS数据格式分析
- 下一篇: 银联支付宝微信共同构筑刷脸支付新生态