首先看下硬件:主要的部分都在绿色方框内
WIFI_D0~3:数据线,平时为高,电压取决于 VCCIO_WL 的电压;
WIFI_CMD:命令线,平时为高,电压取决于 VCCIO_WL 的电压;
WIFI_CLK:时钟,平时为低,电压取决于 VCCIO_WL 的电压;
WIFI 模组供电电源,一直都为高,供电需打印 3.3v;
VCCIO_WL:给 DATA/CMD/CLK 的 IO 供电电源,可以为 3.3 或者 1.8v,但 SDIO3.0 必须为1.8v;
WIFI_REG_ON: 正常工作时为 3.3v, WiFi 关闭时为 0v;
两个晶振: 32K 和 26M/37.4M,正常工作时都会有波形输出;
1. 首先确认开机后系统是否有 USB WIFI 或者 SDIO wifi 设备,正常开机后,可以首先通过内核
log 进行确认,如果是 sdio, wifi 内 log 会有如下 sdio 识别成功 log:
mmc2: new ultra high speed SDR104 SDIO card at address 0001
2 如果 usb 信息和 sdio 扫卡成功 log 信息都没有,那说明 wifi 模块没有正常上电或者 sdio 扫卡异常,需要再次确认硬件是否有问题以及软件 dts 里面 wifi 管脚是否正确配置;因为开机对模块成功上电是检测 wifi 芯片 id 的前提,
另外也可以 cat 如下路径下的 uevent 文件进行确认:
sys/bus/sdio/devices
sys/bus/usb/devices
3 sdmmc1: dwmmc@fe2c0000 是否有加载成功
4 reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; 一定不要和其他GPIO口有冲突
本次调试遇到,WIFI没打开的情况下,改GPIO口一直为高,导致在设置里面打开WIFI,不能扫描
DTS配置,开机过程中SDIO可以识别到AP6256的ID号。 修改冲突的GPIO在设置里面就可以正常打开WIFI了、
5 蓝牙配置
2、在rk3568\device\rockchip\common\init.connectivity.rc中加入
chmod 0660 /dev/ttyS3
3、在rk3568\device\rockchip\common\ueventd.rockchip.rc中加入
/dev/ttyS3 0660 bluetooth net_bt
4、在rk3568\device\rockchip\rk356x_box\rk356x_box\bt_vendor.conf中加入蓝牙对应的串口
UartPort = /dev/ttyS3
UartPort对应的蓝牙实际使用的串口ttySx,至于这个x是几,需要看dtsi文件,如下,一般是一一对应的。
UartPort这个值可以在hardware中查到,rk3568\hardware\broadcom\libbt\src\conf.c
5 蓝牙的信号如下 波形如下参考.找不到的蓝牙的情况,uart_rts_gpios通路的电阻没贴。
reset_gpio工作拉高
wake_gpio(主控环形蓝牙拉高)
wake_host_irq(蓝牙环形主控为规则的方波)
uart_rts_gpios(为规则的脉冲信号)
UART1_CTS(无信号)
UART1_RXD(接收有信号)
UART1_TXD(收有信号)
6 DTS配置
&sdmmc1 {
max-frequency = <150000000>;
supports-sdio;
bus-width = <4>;
disable-wp;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
sd-uhs-sdr104;
status = "okay";
};
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&rk809 1>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&wifi_enable_h>;
/*
* On the module itself this is one of these (depending
* on the actual card populated):
* - SDIO_RESET_L_WL_REG_ON
* - PDN (power down when low)
*/
post-power-on-delay-ms = <200>;
reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
};
wireless_wlan: wireless-wlan {
status = "okay";
compatible = "wlan-platdata";
rockchip,grf = <&grf>;
wifi_chip_type = "ap6256";
pinctrl-names = "default";
pinctrl-0 = <&wifi_host_wake_irq>;
WIFI,host_wake_irq = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>;
};