Skip to content

Commit

Permalink
licheervnano: add peri usage doc
Browse files Browse the repository at this point in the history
  • Loading branch information
0x754C committed Apr 10, 2024
1 parent dee7d40 commit 990284b
Showing 1 changed file with 69 additions and 19 deletions.
88 changes: 69 additions & 19 deletions docs/hardware/zh/lichee/RV_Nano/5_peripheral.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ A17 A16 GND

然后使用终端软件连接串口,波特率115200

### UART1 UART2
### UART1 UART2 UART3

UART1和2的引脚默认用作连接UART蓝牙芯片:

https://github.com/sipeed/LicheeRV-Nano-Build/blob/61ecf59b8b3653e430c8905c7a1ae80201d60f84/build/boards/sg200x/sg2002_licheervnano_sd/u-boot/cvi_board_init.c#L91

```
mmio_write_32(0x03001070, 0x1); // GPIOA 28 UART1 TX
mmio_write_32(0x03001074, 0x1); // GPIOA 29 UART1 RX
Expand All @@ -35,22 +34,39 @@ mmio_write_32(0x03001064, 0x4); // GPIOA 19 UART1 RTS

在Linux用户空间可以使用devmem工具来写入寄存器

C:
shell:

```
devmem 0x03001070 32 0x2 # GPIOA 28 UART2 TX
devmem 0x03001074 32 0x2 # GPIOA 29 UART2 RX
devmem 0x03001068 32 0x6 # GPIOA 18 UART1 RX
devmem 0x03001064 32 0x6 # GPIOA 19 UART1 TX
```

UART3 的引脚被默认复用为SDIO:

https://github.com/sipeed/LicheeRV-Nano-Build/blob/61ecf59b8b3653e430c8905c7a1ae80201d60f84/build/boards/sg200x/sg2002_licheervnano_sd/u-boot/cvi_board_init.c#L83

```
mmio_write_32(0x03001070, 0x2); // GPIOA 28 UART2 TX
mmio_write_32(0x03001074, 0x2); // GPIOA 29 UART2 RX
mmio_write_32(0x03001068, 0x6); // GPIOA 18 UART1 RX
mmio_write_32(0x03001064, 0x6); // GPIOA 19 UART1 TX
mmio_write_32(0x030010D0, 0x0); // D3
mmio_write_32(0x030010D4, 0x0); // D2
mmio_write_32(0x030010D8, 0x0); // D1
mmio_write_32(0x030010DC, 0x0); // D0
mmio_write_32(0x030010E0, 0x0); // CMD
mmio_write_32(0x030010E4, 0x0); // CLK
```

如果想要使用UART3的功能,则需要写入寄存器来设置引脚的PINMUX:

在Linux用户空间可以使用devmem工具来写入寄存器

shell:

```
devmem 0x03001070 32 0x2 // GPIOA 28 UART2 TX
devmem 0x03001074 32 0x2 // GPIOA 29 UART2 RX
devmem 0x03001068 32 0x6 // GPIOA 18 UART1 RX
devmem 0x03001064 32 0x6 // GPIOA 19 UART1 TX
devmem 0x030010D0 32 0x5 # GPIOP 18 UART3 CTS
devmem 0x030010D4 32 0x5 # GPIOP 19 UART3 TX
devmem 0x030010D8 32 0x5 # GPIOP 20 UART3 RX
devmem 0x030010DC 32 0x5 # GPIOP 21 UART3 RTS
```

Linux系统中的串口使用:
Expand Down Expand Up @@ -130,8 +146,7 @@ Windows 系统下,需要进行一些配置。
avahi-browse -art | grep licheervnano
```

列出广播域中域名带有的lpirvnano的设备

列出广播域中域名带有的licheervrvnano的设备


然后使用:
Expand Down Expand Up @@ -173,18 +188,53 @@ arecord -Dhw:0,0 -d 3 -r 48000 -f S16_LE -t wav test.wav & > /dev/null &
使用前需要先正确设置 PINMUX:
```shell
# I2C1
devmem 0x030010D0 32 0x2
devmem 0x030010DC 32 0x2
devmem 0x030010D0 32 0x2 # GPIOP 18 I2C1 SCL
devmem 0x030010DC 32 0x2 # GPIOP 21 I2C1 SDA
# I2C3
devmem 0x030010E4 32 0x2
devmem 0x030010E0 32 0x2
devmem 0x030010E0 32 0x2 # GPIOP 22 I2C3 SCL
devmem 0x030010E4 32 0x2 # GPIOP 23 I2C3 SDA
```

然后可以使用 i2c-tools 进行 i2c 外设的操作,镜像中已经预装。

## SPI

SPI2默认被复用作SDIO:

https://github.com/sipeed/LicheeRV-Nano-Build/blob/61ecf59b8b3653e430c8905c7a1ae80201d60f84/build/boards/sg200x/sg2002_licheervnano_sd/u-boot/cvi_board_init.c#L83

```
mmio_write_32(0x030010D0, 0x0); // D3
mmio_write_32(0x030010D4, 0x0); // D2
mmio_write_32(0x030010D8, 0x0); // D1
mmio_write_32(0x030010DC, 0x0); // D0
mmio_write_32(0x030010E0, 0x0); // CMD
mmio_write_32(0x030010E4, 0x0); // CLK
```

如果想要使用SPI2,则需要更改PINMUX:

```
devmem 0x030010D0 32 0x1 # GPIOP 18 SPI2 CS
devmem 0x030010DC 32 0x1 # GPIOP 21 SPI2 MISO
devmem 0x030010E0 32 0x1 # GPIOP 22 SPI2 MOSI
devmem 0x030010E4 32 0x1 # GPIOP 22 SPI2 SCK
```

简单测试SPI:

将SPI的MISO和MOSI连起来,然后执行:

```
spidev_test -D /dev/spidevN.N -p 1234 -v
# 将N.N换成对应的BUS
```

如果TX和RX的数据一样,则引脚复用没有问题

## ADC

插针上引出了一路 ADC,使用的是 ADC1。
插针上引出了一路 ADC,引脚是GPIOB 3,使用的是 ADC1。

首先选择 ADC channel,这里以 ADC1 为例:
```shell
Expand Down Expand Up @@ -220,7 +270,7 @@ panel=st7701_dxq5d0019b480854
panel=st7701_d300fpc9307a
```

2.28寸屏:
2.3寸屏:

```
panel=st7701_hd228001c31
Expand Down

0 comments on commit 990284b

Please sign in to comment.