天天看點

全志平台通讀寫寄存器的方法

        全志平台通讀寫寄存器的方法

echo 寄存器值 > /sys/class/sunxi_dump/dump

cat dump 檢視寫進去的值

echo 寄存器值 > /sys/class/sunxi_dumo/write

cat write 檢視寫進去的值

示例:

1.

到全志一号通查閱對應晶片的user_manual,看想查的寄存器的位置是多少

如,将PH8配作spi0的mosi

2.

io口的基位址0x01C2 0800 

全志平台通讀寫寄存器的方法

PH Configure Register 1的偏移 Offset:0x100

是以這一組是的位址是0x01C2 0900

3.

查到PH8_SELECT Bit 2:0(0到2位):

PH8_SELECT

000: Input

001: Output

010: SPI0_MOSI

011: UART3_RTS

100: Reserved

101: Reserved

110: Reserved

111: IO Disable

是以如果PH8配成spi 的mosi的話,應該是

0x00000022

32位寄存器:

0000 0000 0000 0000 0000 0000 0000 0010

後面3位010則代表是配成SPI0_MOSI

4.

驗證:

[email protected]:/sys/class/sunxi_dump# echo 0x01C20900 > dump                         

[email protected]:/sys/class/sunxi_dump# cat dump                                       

0x00000022

确認無誤

5.

再查spi0對應的寄存器的數值:

R16 spi0 - 0x01C6 8000 --- 0x01C6 8FFF  (size 4K)

[email protected]:/sys/class/sunxi_dump# echo 0x01C68000 > dump                         

[email protected]:/sys/class/sunxi_dump# cat dump                                       

0x00090000

即:

0000 0000 0000 1001 0000 0000 0000 0000

讀多個寄存器的資料:

[email protected]:/sys/class/sunxi_dump# echo 0x01c68000,0x01c68300 > dump              

[email protected]:/sys/class/sunxi_dump# cat dump                                       

0x01c68000: 0x00090000 0x00000083 0x000001c4 0x00000000                         

0x01c68010: 0x00000000 0x00000032 0x00400001 0x00000000                         

0x01c68020: 0x00000000 0x00001001 0x00000000 0x00000000                         

0x01c68030: 0x00000000 0x00000000 0x00000000 0x00000000                         

.....                         

0x01c682f0: 0x00000000 0x00000000 0x00000000 0x00000000                         

0x01c68300: 0x00000000

比如,查offset 0x08

[email protected]:/sys/class/sunxi_dump# echo 0x01c68008 > dump                         

[email protected]:/sys/class/sunxi_dump# cat dump                                       

0x000001c4

0x000001c4 = 0000 0000 0000 0000 0000 0001 1100 0100

從右邊數第31個bit位是0,0: Idle-0代表idle,可以從使用者手冊裡查到每個寄存器每個數值的含義。

繼續閱讀