打印
[活动专区]

【AT-START-F425测评】AT32F425的USBCAN卡固件实现

[复制链接]
1721|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
imdx|  楼主 | 2022-3-7 15:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AN, ar
AT32F425内部架构和AT32F421很接近,M4内核+嵌入式FLASH,主打低成本,主要更新是增加了USB和CAN这两个外设,相比同样带USB和CAN的AT32F415,主要指标都有降低,意味着成本也更低一些。从定位来看AT32F425处于AT32F415和AT32F421之间,如果你的应用需要USB或者CAN,那么AT32F425就是最佳选择之一。
USBCAN卡同时使用了USB和CAN外设,市面上以STM32F103为代表的很多MCU虽然同时具备USB和CAN但是有个奇葩的问题:这两个外设因为共享缓存导致无法同时使用,很多国内厂家在兼容ST的同时把这个问题也“兼容”了过来,比如 https://zhuanlan.zhihu.com/p/459732865 这里提到的。在USB和CAN共存方面雅特力做得一直不错。
USBCAN卡是调试CAN总线的必备工具,众所周知PC带USB接口但是都没有带CAN接口,因此必须要用USBCAN卡将USB接口转换成CAN接口。国内用的最多的是ZLG的卡,很多第三方工具也都是使用ZLG的SDK进行二次开发来的。使用AT32F425可以开发USBCAN卡用来兼容ZLG的USBCAN-I。
由于AT-START-F425开发板没有带CAN接口芯片,使用杜邦线将5V电源和PB8、PB9引到接口板上即可外扩CAN接口。如下图所示:

固件开发很顺利,因为之前已经使用AT32F415实现了完整的USBCAN协议栈,只需要做移植工作,AT32F425和AT32F415的USB外设非常接近,而CAN外设又是完全相同的。只需要注意几个地方即可:
1)两者的GPIO初始化有差别
 // PB8  = CAN0_RX
        // PB9  = CAN0_TX
#if defined(AT32F415C8T7)
        gpio_init_struct.gpio_pins = GPIO_PINS_8;
        gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
        gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull = GPIO_PULL_UP;
        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init(GPIOB, &gpio_init_struct);
        gpio_init_struct.gpio_pins = GPIO_PINS_9;
        gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
        gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
        gpio_init(GPIOB, &gpio_init_struct);
        gpio_pin_remap_config(CAN1_GMUX_0010, TRUE);
#else
        gpio_init_struct.gpio_pins = GPIO_PINS_8 | GPIO_PINS_9;
        gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
        gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init(GPIOB, &gpio_init_struct);
        gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE8, GPIO_MUX_4);
        gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE9, GPIO_MUX_4);
#endif
2)AT32F425支持VBUSIGNORE,需要定义以下宏。
/**
  * [url=home.php?mod=space&uid=247401]@brief[/url] ignore vbus detection, only available in at32f415xx revision C.
  *        at32f415xx revision B: (not support)
  *        the vbus detection pin (pa9) can not be used for other functionality.
  *        vbus pin must kept at VBUS or VDD.
  *
  *        at32f415xx revision C: (support)
  *        ignore vbus detection, the internal vbus is always valid.
  *        the vbus pin (pa9) can be used for other functionality.
  */
#define USB_VBUS_IGNORE
最后就是测试,使用乒乓测试,即USBCAN卡连接设备A,设备A将收到的CAN帧直接发送回来。使用cantest软件进行1w帧乒乓收发测试一切正常。



使用特权

评论回复
沙发
huquanz711| | 2022-3-7 20:31 | 只看该作者
不错,谢谢分享。

使用特权

评论回复
板凳
两只袜子| | 2022-3-10 09:58 | 只看该作者
不错,感谢分享

使用特权

评论回复
地板
13342220988| | 2023-3-2 23:34 | 只看该作者
请教下425F8P7的PA11,PA12作为can1使用可以吗? 我这边在415上调试没问题,在425调试不通,怀疑是不是F8P7不支持can?

使用特权

评论回复
5
ArterySW| | 2023-3-3 09:36 | 只看该作者
支持的,使用PA9/10与PA11/12的交换功能。

使用特权

评论回复
6
ArterySW| | 2023-3-3 09:40 | 只看该作者
本帖最后由 ArterySW 于 2023-3-3 09:48 编辑

可参考这个demo  :
AT32F421 型号
AT32F421_Firmware_Library/ project / at_start_f421 / examples / scfg / pa11_12_remap

AT32F425型号
AT32F425_Firmware_Library/ project / at_start_f425 / examples / scfg / pa11_12_remap


使用特权

评论回复
7
13342220988| | 2023-3-3 10:45 | 只看该作者
本帖最后由 13342220988 于 2023-3-4 21:25 编辑

搞定,多谢老师指点

使用特权

评论回复
8
13342220988| | 2023-3-3 12:16 | 只看该作者
本帖最后由 13342220988 于 2023-3-4 21:24 编辑

搞定, 多谢老师指点

使用特权

评论回复
9
gygp| | 2023-3-7 13:40 | 只看该作者
USBCAN是什么?              

使用特权

评论回复
10
lzmm| | 2023-3-7 13:47 | 只看该作者
usb和can是可以同时使用的吗

使用特权

评论回复
11
kmzuaz| | 2023-3-7 14:04 | 只看该作者
这个数据传递是通过dma传递的吗?

使用特权

评论回复
12
geraldbetty| | 2023-3-7 14:13 | 只看该作者
如何自检CAN通道收发性能 ?              

使用特权

评论回复
13
USB-CAN是一款用于PC的USB形式的CAN接口卡

使用特权

评论回复
14
elsaflower| | 2023-3-7 19:39 | 只看该作者
AT32F425支持几个usb设备?

使用特权

评论回复
15
robincotton| | 2023-3-7 19:45 | 只看该作者
usbcan需要写入程序吗               

使用特权

评论回复
16
51xlf| | 2023-3-7 19:51 | 只看该作者
usb的速度很快,如何控制can传输完成的?

使用特权

评论回复
17
mmbs| | 2023-3-7 19:56 | 只看该作者
如何转存CAN数据呢?               

使用特权

评论回复
18
backlugin| | 2023-3-7 20:06 | 只看该作者
AT32F425官方标称最高频率是96M  

使用特权

评论回复
19
biechedan| | 2023-3-7 20:12 | 只看该作者
usb can收发器怎么检测CAN通道是不是好的呢?

使用特权

评论回复
20
xiaoyaodz| | 2023-3-7 20:18 | 只看该作者
usbcan2传输不稳定吧               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

120

主题

901

帖子

8

粉丝