AI-Talk开发板硬件适配
一、说明
使用duomotai_ap sdk对AI-Talk开发板进行开发,sdk中的板级配置文件是适配CSK6-MIX开发板的,但是AI-Talk开发与CSK6-MIX开发板部分外设的信号连接不一样,所以要根据AI-Talk开发板的信号连接修改板级配置文件。
二、配置文件
1、DTS文件
duomotai_ap/.sdk/csk/boards/arm/csk6_duomotai_devkit/csk6_duomotai_devkit.dts
2、config文件
duomotai_ap/.sdk/csk/boards/arm/csk6_duomotai_devkit/csk6_duomotai_devkit_defconfig
三、修改DTS文件
1、LCD
AI-Talk开发板与CSK6-MIX开发板只有LCD_RST管脚不一样,其余管脚是一样的。CSK6-MIX开发板没有将LCD_RST连接到GPIO上,所以csk6_duomotai_devkit.dts文件中将st7789v的reset-gpios的定义屏蔽了,AI-Talk开发板将LCD_RST连接到CH32的PD4,所以去掉reset-gpios的注释,并改为:
reset-gpios = <&exgpiod 4 GPIO_ACTIVE_LOW>;
exmcu的PD4,有效电平为低,驱动中没有使用有效电平这个参数,所以设置为高、低电平都行。
2、CAMERA
当前所用GC0328摄像头只有PWDN信号,没有RESET信号,AI-Talk开发板与CSK6-MIX开发板只有CAM_PWDN管脚不一样,CSK6-MIX开发板没有将CAM_PWDN连接到GPIO上,所以csk6_duomotai_devkit.dts文件中没有定义gc0328的pwdn-gpios,AI-Talk开发板将CAM_PWDN连接到CH32的PC7,所以增加pwdn-gpios的定义,并且AI-Talk开发板连接了CAM_RESET到GPIO上,所以也增加reset-gpios的定义:
&i2c1 {
status = "okay";
pinctrl-0 = <&pinctrl_i2c1_scl_default &pinctrl_i2c1_sda_default>;
pinctrl-names = "default";
gc0328: gc0328@21 {
compatible = "galaxyc,gc0328";
status = "okay";
reg = <0x21>;
reset-gpios = <&gpioa 1 0>;
pwdn-gpios = <&exgpioc 7 1>;
};
PWDN为exmcu的PC7,有效电平为高,驱动中没有使用有效电平这个参数,所以设置为高、低电平都行。
RESET为exmcu的PA1,低电平为高,驱动中没有使用有效电平这个参数,所以设置为高、低电平都行。
3、TOUCH
AI-Talk开发板与CSK6-MIX开发板只有TP_RST管脚不一样,其余管脚是一样的。CSK6-MIX开发板没有将TP_RST连接到GPIO上,所以csk6_duomotai_devkit.dts文件中没有定义ft5336的reset-gpios,AI-Talk开发板将TP_RST连接到CH32的PD3,所以增加reset-gpios的定义:
reset-gpios = <&exgpiod 3 1>;
exmcu的PD4,有效电平为低,驱动中没有使用有效电平这个参数,所以设置为高、低电平都行。
duomotai_ap/.sdk/zephyr/dts/bindings/input/focaltech,ft5336.yaml文件properties部分声明reset-gpios,修改文件之后如下:
properties:
int-gpios:
type: phandle-array
reset-gpios:
type: phandle-array
description: |
The RESETn pin is asserted to disable the sensor causing a hard
reset. The sensor receives this as an active-low signal.
4、LED_RGB
AI-Talk开发板上没有LED_RGB,所以应该取消led-rgb-red、led-rgb-green、led-rgb-blue的定义,但AI-Talk开发板上有个用户指示LED,连接到exmcu的PA2,增加user_led的定义。修改leds节点:
leds {
compatible = "gpio-leds";
user_led: user_led {
gpios = <&exgpioa 2 GPIO_ACTIVE_LOW>;
};
lcd_pwm_ctl: lcd_pwm_ctl {
gpios = <&exgpiod 2 GPIO_ACTIVE_LOW>;
};
camera_ir_led: camera_ir_led {
gpios = <&exgpioc 0 GPIO_ACTIVE_LOW>;
};
};
修改aliases:
aliases {
sw0 = &user_button_0;
csk6-exmcu = &csk6_ch32v003;
lcd-pwm-ctl = &lcd_pwm_ctl;
camera-ir-led = &camera_ir_led;
led0 = &user_led;
};
5、USER_BUTTON
AI-Talk开发板与CSK6-MIX开发板的user_button都连接在PB0上。
6、ADC_KEY
CSK6-MIX开发板使用exmcu的ADC Channel2(PC4)检测K1和K2是否按下,AI-Talk开发板没有这个两个按键,并且PC4也用于其它功能,所以删除adckey节点的定义。
7、camera_ir_led
CSK6-MIX开发板使用exmcu PC0控制摄像头红外LED亮灭,AI-Talk开发板没有这个功能,但是AI-Talk开发板的exmcu PC0为悬空状态,所以dts中保留camera_ir_led节点。