实测验证USB口是可以用作IO口的,但是需要在IO初始化的时候添加一段USB初始化代码
usb_iomode(1); //先执行此函数,切换usb成gpio模式
gpio_set_pull_up(IO_PORT_DP, 0);
gpio_set_pull_down(IO_PORT_DP, 0);
gpio_set_direction(IO_PORT_DP, 1);
gpio_set_die(IO_PORT_DP, 0);
gpio_set_dieh(IO_PORT_DP, 0);
gpio_set_pull_up(IO_PORT_DM, 0);
gpio_set_pull_down(IO_PORT_DM, 0);
gpio_set_direction(IO_PORT_DM, 1);
gpio_set_die(IO_PORT_DM, 0);
gpio_set_dieh(IO_PORT_DM, 0);
usb1_iomode(1); //先执行此函数,切换usb成gpio模式
gpio_set_pull_up(IO_PORT_DP1, 0);
gpio_set_pull_down(IO_PORT_DP1, 0);
gpio_set_direction(IO_PORT_DP1, 1);
gpio_set_die(IO_PORT_DP1, 0);
gpio_set_dieh(IO_PORT_DP1, 0);
gpio_set_pull_up(IO_PORT_DM1, 0);
gpio_set_pull_down(IO_PORT_DM1, 0);
gpio_set_direction(IO_PORT_DM1, 1);
gpio_set_die(IO_PORT_DM1, 0);
gpio_set_dieh(IO_PORT_DM1, 0);
除此之外,外部需要添加上拉电阻如下图
usb口的驱动能力,跟上下拉电阻值,跟gpio有区别,做通信口,可能会影响到通信速率。
需要上拉,最好预留外部电阻料焊盘。
同时在AC6328N中可能DP口被默认为串口通信口,实测修改为其他口后,仍然会输出乱码