whj467467222
whj467467222 - 认证专家
开源,分享,交流,共同进步

注册于 3 years ago

回答
383
文章
28
关注者
24

先说结论: 可以。

modbus 是一种主从模型的通讯协议,每次通讯都是由主机发起,从机回复,从机不会主动发送数据。从机的协议栈在接收到自己的报文之后,经过解析并不是自己对应 ID 的报文,那么就不会响应主机的报文,所以同一时刻总线上只有一个 ID 在发送报文。

如果我的答案帮到你了,请点个采纳,这是我继续回答问题的动力。

正点原子的 F407 开发板上 2020 年下半年之后生产的好像是 NM25Q 不是华邦的 W25Q 系列,这颗 FLASH 目前的 SFUD 好像不支持,SFUD的工作原理

所以这个只能麻烦楼主自己尝试根据 SFUD 的原理去实现对接支持这颗 FLASH,或者看看有没有其他有移植好的,或者自己买一个 W25Q 重新焊上去

有几个地方您希望能确认一下:

  1. CAN 的外设的时钟源是多少?
  2. CAN 波特率是多少?是在哪里一步步分频配置出来的?
  3. internal LoopBack mode 是在哪里配置的?
  4. drv_can.c 有做什么修改?

ART-Pi 工业扩展板的 FDCAN 只能用经典配置成经典 CAN 用(如果没有改版的话),主要的原因是用的这颗 CAN 的收发器不支持 FDCAN,如果买一颗引脚兼容的 FDCAN 收发器是可以配置成 FDCAN 来使用的。

can_sample.c 可以在这里找到

image.png

但是这个 can_sample.c 并不能直接使用,ART-Pi 的设备被注册的名字应该是 fdcan1 , 所以这里需要稍作修改,另外需要自己注意 can 波特率的计算,这个是因为 STM32H7 的时钟源的问题,这个如果有疑问可以追问。

目前 RT-Thread 的设备的 CAN 设备框架仅支持经典 CAN。

也欢迎您在 ART-Pi 的 QQ 群来探讨相关的问题。

两种方法你都可以试一下,第二种方法有几率不成功:

第一种:修改 MDK 的配置文件,http://www.openedv.com/forum.php?mod=viewthread&tid=279161

第二种:升级 ST_LINK 固件,https://github.com/armink/HackSTLinkUpgrade

这个可以认为是几乎不可能的。除非你自己飞线。建议退而求其次选择其他串口。可以直接对照扩展引脚编号配合 CUBEMX 选择合适的引脚。

这题我正好测试过,请楼主确定几个点:

  1. SPI 轮训是正常的
  2. SPI 请使用 DMA1 或者 DMA2
  3. SPI 会使用到 rt_malloc , heap 确保是 AXI SRAM
  4. MPU 配置的 cache 策略
  5. drv_spi.c 中在开启 DMA 之后,对应的 SPI 外设中断是否开启了.

如果 SPI 轮训是正常的,请使用 DMA1 或者 DMA2.
因为 DMA1 DMA2 无法访问到 TCM,如果确保 rt_malloc 是从 AXI SRAM 申请的内存.
cache这里,如果你参考的 ART-Pi 或者 STM32H743-ATK-APLLO 那么这里就不需要修改.
检查是否对用的 外设中断函数是否有.

当然可以的。

提交到 gitee 的时候请选择分支为 gitee_master 这个分支。

image.png

出现这种情况,可以这样检查:

  1. 检查对应的宏是否打开;

stm32f4xx_hal_conf.h 中检查 HAL_SDRAM_MODULE_ENABLED 是否取消了注释。

  1. 检查对应的源文件是否参与了构建

image.png

如图所示,在导航器中查看对应的文件,这个文件如果打了一个斜线,表示这个文件没有参与到构建。

如果没有导航器,可以在 窗口 -> 显示视图 -> 导航器 来调出这个选项

回到
顶部

发布
问题

投诉
建议