基于AT32F403的CAN入门(STM32F103类似)

1、 CAN的硬件结构:常说的CAN总线的总线就是下图的CANH和CANL两根线组成的双绞线,两端通常会分别串联两个终端电阻(常见阻值为120Ω)。各个节点就通过CANH和CANL两条线并到总线上,各节点可以随时插拔而不影响其他节点。每个节点都可以往总线上发送信息,总线上其他节点都可以接收这条信息。而如果两个节点同一时间发送信息,就会进行仲裁,优先级高(即ID数值小的节点)的节点仲裁胜出继续发送信息,仲裁失败的节点立即转入接收状态。

2、 CAN数据帧格式:
CAN数据帧分为两种:标准帧(对应标准ID:11位)和扩展帧(对应扩展ID:29位)。
以标准帧为例,一帧完整的CAN数据就包括 下图所示部分:
CAN帧结构

3、 CAN的收发机制:
发送:
AT32的CAN有3个发送邮箱,用户只需要:
① 通过“发送邮箱空”标志位确认一个空邮箱;
② 然后把需要发送数据帧的数据,ID等信息写入发送邮箱;
③ 写对应邮箱的“发送请求位”。
接收:
AT32F403的CAN有14个接收过滤器。接收过滤器用于过滤ID,用户可配置接收过滤寄存器,来接收想要的ID的帧,而过滤丢弃掉不需要的ID的帧。
AT32的CAN有两个接收FIFO,每个FIFO有3级深度(即每个FIFO可以存储3帧数据)。
① CAN每接收到一帧通过过滤的数据帧,该帧会被存入接收FIFO。此时FIFO变为挂号状态(即接收FIFO非空);
② 用户可以在对应的FIFO挂号中断里面去读取接收邮箱的数据。
③ 用户读取完数据后,通过置位“释放FIFOx”位来释放刚刚读取过的邮箱。

4、基于AT32F403的基础配置:
1)时钟使能:

RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_AFIO, ENABLE); //使能GPIOB,AFIO时钟
RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_CAN1, ENABLE); //使能CAN1时钟

2)配置CAN对应GPIO口:

GPIO_PinsRemapConfig(GPIO_Remap1_CAN1,ENABLE); //CAN1重映射到PB9-TX,PB8-RX
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_9;
GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP<
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F103AT32F403A都是麒麟芯片的一种,但它们有一些不同的特性和架构,因此需要进行移植。 首先,在移植之前,我们需要了解STM32F103AT32F403A之间的差异。STM32F103基于ARM Cortex-M3内核,而AT32F403A基于ARM Cortex-M4内核。Cortex-M4内核相比Cortex-M3内核增加了浮点单元(FPU),这意味着AT32F403A可以更有效地处理浮点数。此外,AT32F403A还具有更快的时钟速度和更大的片上存储器(SRAM和Flash),这使得它更适合处理更复杂的应用程序。 其次,移植过程本质上就是将现有的STM32F103代码适应到AT32F403A上。这需要做一些修改,包括但不限于以下几个方面: - 芯片的引脚分配:由于不同芯片引脚定义不同,因此需要重新分配芯片引脚。 - 外设寄存器的地址:AT32F403A的外设寄存器的地址和STM32F103不同,因此需要修改它们的地址。 - 定时器:AT32F403A中硬件定时器的数量和类型不同于STM32F103,应对不同的芯片特性做出相应的改动。 - 代码编译:AT32F403A使用的编译器和STM32F103可能不同,因此需要对其进行更改以适应新的编译器。 最后,移植完成后需要进行测试,以确保代码能够正确工作。测试的目标应该是检查芯片的外设是否按照预期工作,确认代码在不同的运行模式下是否稳定,并确保代码正确适应不同的片上资源配置。 总之,将STM32F103移植到AT32F403A需要一些技术积累和耐心,需要深入了解两个芯片的差异并进行适当的代码修改才能成功移植。 ### 回答2: 首先,STM32F103AT32F403A是两种不同的芯片,它们的架构、引脚分配、外设等都不尽相同。因此,将STM32F103移植到AT32F403A需要进行一系列的修改和适配。 第一步,需要对AT32F403A进行硬件连接,包括外设驱动、定时器等。需要对原有的STM32F103的硬件驱动进行修改和适配,以适应AT32F403A的架构和特性。 第二步,需要进行基于AT32F403A的操作系统(OS)适配,包括底层驱动,Kernel(I/O 子系统、存储子系统)和FS(文件系统)等。需要调整原有应用程序的系统级别的API调用。 第三步,需要进行代码层面的移植。需要将原有的STM32F103的代码逐步迁移到AT32F403A的代码平台上,确保程序的正确性和稳定性。需要对原有代码进行修改和适配,以符合AT32F403A的特性和限制。 总结来说,STM32F103移植到AT32F403A需要进行一系列低层次的修改和适配,需要对底层硬件进行重新定义和适配,同时对系统级别和应用程序进行调整和迁移。这是一个较为复杂的技术工作,需要耐心和技术储备。 ### 回答3: 将STM32F103移植到AT32F403A是一项重要而复杂的任务,需要进行周密的计划和准备。 首先,需要了解这两种芯片的架构、指令集、外设以及寄存器等特性的差异和相似点。然后,根据这些差异和相似点,针对AT32F403A芯片特性,重新编写GPIO、UART、SPI、I2C等外设的驱动程序。 其次,需要根据AT32F403A的硬件资源和外设的接口特性,对原有的中断系统、时钟系统、存储器系统、DMA系统等多个模块,进行调整和修改,以适应移植的需求。 最后,需要进行严格的测试和验证,确保移植后的AT32F403A芯片在各方面都能够与STM32F103芯片达到相同的性能和稳定性,并且保证各种外设功能同样正常运行。 总之,将STM32F103移植到AT32F403A芯片,需要具有一定的芯片架构设计和底层软件开发经验,同时需要进行仔细的规划和测试,才能够实现一次成功的移植。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值