WHC 接口及硬件配置
WHC 接口连接
Ameba 与树莓派引脚对应关系如下:
Interface |
Ameba SoC pin |
Raspberry Pi GPIO |
Function |
|---|---|---|---|
SDIO |
PB6 |
GPIO 26 |
SDIO_DAT2 |
PB7 |
GPIO 27 |
SDIO_DAT3 |
|
PB8 |
GPIO 23 |
SDIO_CMD |
|
PB9 |
GPIO 22 |
SDIO_CLK |
|
PB13 |
GPIO 24 |
SDIO_DAT0 |
|
PB14 |
GPIO 25 |
SDIO_DAT1 |
|
SPI |
PB24 |
GPIO 10 |
SPI_MOSI |
PB25 |
GPIO 9 |
SPI_MISO |
|
PB23 |
GPIO 11 |
SPI_CLK |
|
PB26 |
GPIO 8 |
SPI_CS |
|
PB8 |
GPIO 23 |
DEV_TX_REQ |
|
PB9 |
GPIO 22 |
DEV_READY |
Interface |
Ameba SoC pin |
Raspberry Pi GPIO |
Function |
|---|---|---|---|
SPI |
PA29 |
GPIO 10 |
SPI_MOSI |
PA30 |
GPIO 9 |
SPI_MISO |
|
PA28 |
GPIO 11 |
SPI_CLK |
|
PA31 |
GPIO 8 |
SPI_CS |
|
PB2 |
GPIO 14 |
DEV_TX_REQ |
|
PB3 |
GPIO 15 |
DEV_READY |
Interface |
Ameba SoC pin |
Raspberry Pi GPIO |
Function |
|---|---|---|---|
SPI |
PA29 |
GPIO 10 |
SPI_MOSI |
PA30 |
GPIO 9 |
SPI_MISO |
|
PA28 |
GPIO 11 |
SPI_CLK |
|
PA31 |
GPIO 8 |
SPI_CS |
|
PB2 |
GPIO 14 |
DEV_TX_REQ |
|
PB3 |
GPIO 15 |
DEV_READY |
Interface |
Ameba SoC pin |
Raspberry Pi GPIO |
Function |
|---|---|---|---|
SPI |
PA29 |
GPIO 10 |
SPI_MOSI |
PA30 |
GPIO 9 |
SPI_MISO |
|
PA28 |
GPIO 11 |
SPI_CLK |
|
PA31 |
GPIO 8 |
SPI_CS |
|
PB2 |
GPIO 14 |
DEV_TX_REQ |
|
PB3 |
GPIO 15 |
DEV_READY |
Interface |
Ameba SoC pin |
Raspberry Pi GPIO |
Function |
|---|---|---|---|
SPI |
PA29 |
GPIO 10 |
SPI_MOSI |
PA30 |
GPIO 9 |
SPI_MISO |
|
PA28 |
GPIO 11 |
SPI_CLK |
|
PA31 |
GPIO 8 |
SPI_CS |
|
PB2 |
GPIO 14 |
DEV_TX_REQ |
|
PB3 |
GPIO 15 |
DEV_READY |
备注
SPI DEV_TX_REQ:Ameba 通过此引脚上升沿通知 Host 有数据待发送
SPI DEV_READY:Ameba 状态指示信号
高电平(1):设备就绪,可接收数据
低电平(0):设备繁忙,暂停传输
备注
默认使用 Ameba SDK 预定义 SDIO 引脚,如需修改需调整以下文件中 SDIO_Pin_Grp , 对应 SDIO_PAD 中的 pinmux 的索引:
文件地址:
component/soc/usrcfg/amebadplus/ameba_intfcfg.cHost 端 SDIO 中断模式要求:
默认使用 SDIO_DATA1。
若 Host 不支持 SDIO 中断:
可切换至轮询模式进行通信。
若 Host 需通过 GPIO 触发中断:Ameba 平台提供部分可配置 GPIO 支持此功能。详细配置与支持列表,请 联系我们 获取。
默认使用 Ameba SDK 预定义 SPI 专用引脚配置。如需自定义引脚配置,请参考 引脚复用表 选择引脚后按以下步骤调整:
专用引脚配置方案
修改文件
component/wifi/whc/whc_dev/spi/whc_spi_drv.h中对应的代码:
#elif defined (CONFIG_AMEBADPLUS)
#define PINMUX_FUNCTION_SPIS PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_9
#define RX_REQ_PIN _PB_8
#define SPIS_MOSI _PB_24
#define SPIS_MISO _PB_25
#define SPIS_SCLK _PB_23
#define SPIS_CS _PB_26
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIS PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIS_MOSI _PA_29
#define SPIS_MISO _PA_30
#define SPIS_SCLK _PA_28
#define SPIS_CS _PA_31
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIS PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIS_MOSI _PA_29
#define SPIS_MISO _PA_30
#define SPIS_SCLK _PA_28
#define SPIS_CS _PA_31
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIS PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIS_MOSI _PA_29
#define SPIS_MISO _PA_30
#define SPIS_SCLK _PA_28
#define SPIS_CS _PA_31
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIS PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIS_MOSI _PA_29
#define SPIS_MISO _PA_30
#define SPIS_SCLK _PA_28
#define SPIS_CS _PA_31
若改用 SPI1(SDK 使用 SPI0 作为默认配置),还需在同一文件中修改下列代码:
#define WHC_SPI_DEV SPI0_DEV
#define SPIS_IRQ SPI0_IRQ
#define WHC_SPI_DEV SPI0_DEV
#define SPIS_IRQ SPI0_IRQ
#define WHC_SPI_DEV SPI0_DEV
#define SPIS_IRQ SPI0_IRQ
#define WHC_SPI_DEV SPI0_DEV
#define SPIS_IRQ SPI0_IRQ
#define WHC_SPI_DEV SPI0_DEV
#define SPIS_IRQ SPI0_IRQ
全矩阵引脚配置方案
专用引脚与全矩阵引脚的区别,请参考 功能复用 。
选择全矩阵引脚配置时,在完成上述 专用引脚 配置的基础上,还需:
在
component/wifi/whc/whc_dev/spi/whc_spi_drv.c文件中,将Pinmux_Config(PinName, PinFuncID)函数的PinFuncID参数修改为对应的全矩阵信号 ID :
void whc_spi_dev_device_init(void)
{
...
/* Initialize SPI */
Pinmux_Config(SPIS_MOSI, PINMUX_FUNCTION_SPIS);//MOSI
Pinmux_Config(SPIS_MISO, PINMUX_FUNCTION_SPIS);//MISO
Pinmux_Config(SPIS_SCLK, PINMUX_FUNCTION_SPIS);//CLK
Pinmux_Config(SPIS_CS, PINMUX_FUNCTION_SPIS);//CS
PAD_PullCtrl(SPIS_CS, GPIO_PuPd_UP); // pull-up, default 1
PAD_PullCtrl(SPIS_SCLK, GPIO_PuPd_DOWN);
...
}
调整主机频率(全矩阵引脚的频率要求请参考 SPI 外设 )
文件地址: component/wifi/whc/whc_host_linux/common/spi/spidev-overlay.dts
fragment@3 {
target = <&spi0>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
inic_spi: inic_spi@0 {
compatible = "realtek,inic";
reg = <0>;
spi-max-frequency = <30000000>;
status = "okay";
};
};
};
文件地址 component/wifi/whc/whc_host_rtos/spi/whc_spi_host.h
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIM PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIM_MOSI _PA_29
#define SPIM_MISO _PA_30
#define SPIM_SCLK _PA_28
#define HOST_READY_PIN _PA_31
#define SPI_CLOCK_DIVIDER 6 // 120M clock source according to spi_get_ipclk
配置示例
以 RTL8713E 为例,从 引脚复用表 选取全矩阵引脚组合:
SoC pin |
PinFuncID |
|---|---|
PA_21 |
SPI1_MOSI |
PA_12 |
SPI1_MISO |
PA_11 |
SPI1_MISO |
PA_23 |
SPI1_CS |
更新
component/wifi/whc/whc_dev/spi/whc_spi_drv.hSPI 配置:
#define SPIS_MOSI _PA_21
#define SPIS_MISO _PA_12
#define SPIS_SCLK _PA_11
#define SPIS_CS _PA_23
#define WHC_SPI_DEV SPI1_DEV
#define SPIS_IRQ SPI1_IRQ
更新
component/wifi/whc/whc_dev/spi/whc_spi_drv.c引脚复用配置:
void whc_spi_dev_device_init(void)
{
...
/* Initialize SPI */
Pinmux_Config(SPIS_MOSI, PINMUX_FUNCTION_SPI1_MOSI);//MOSI
Pinmux_Config(SPIS_MISO, PINMUX_FUNCTION_SPI1_MISO);//MISO
Pinmux_Config(SPIS_SCLK, PINMUX_FUNCTION_SPI1_CLK);//CLK
Pinmux_Config(SPIS_CS, PINMUX_FUNCTION_SPI1_CS);//CS
PAD_PullCtrl(SPIS_CS, GPIO_PuPd_UP); // pull-up, default 1
PAD_PullCtrl(SPIS_SCLK, GPIO_PuPd_DOWN);
...
}
调整主机频率
文件地址: component/wifi/whc/whc_host_linux/common/spi/spidev-overlay.dts
fragment@3 {
target = <&spi0>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
inic_spi: inic_spi@0 {
compatible = "realtek,inic";
reg = <0>;
spi-max-frequency = <10000000>;
status = "okay";
};
};
};
文件地址 component/wifi/whc/whc_host_rtos/spi/whc_spi_host.h
#elif defined (CONFIG_AMEBALITE)
#define PINMUX_FUNCTION_SPIM PINMUX_FUNCTION_SPI
#define DEV_READY_PIN _PB_3
#define RX_REQ_PIN _PB_2
#define SPIM_MOSI _PA_29
#define SPIM_MISO _PA_30
#define SPIM_SCLK _PA_28
#define HOST_READY_PIN _PA_31
#define SPI_CLOCK_DIVIDER 12 // 120M clock source according to spi_get_ipclk
WHC SDIO 转接板
Realtek 提供了方便对接 mini SD 卡槽的转接板供客户选择,推荐使用专用转接板连接 SDIO 引脚。
WHC SDIO 转接板实物图
备注
Realtek 官方转接板即将上市,当前可 联系我们 申请样品。
WHC 树莓派直连方案
高速传输场景建议直接将 Ameba SDIO 引脚焊接至树莓派 GPIO。
Ameba 与树莓派直连示意图