请选择 进入手机版 | 继续访问电脑版
查看: 5016|回复: 9

RT1052+LPUART的IDLE读写和Modbus主机的实现

[复制链接]
  • TA的每日心情
    慵懒
    11 小时前
  • 签到天数: 1394 天

    [LV.10]以坛为家III

    48

    主题

    3452

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7220
    最后登录
    2024-3-29
    发表于 2018-11-30 09:39:27 | 显示全部楼层 |阅读模式
    LPUART的使用,飞凌提供了以上的例程,包括了DMA,中断,普通等常用方式,可以方便我们快速上手 TIM图片20181130090949.png

    这里需要进行modbus通讯,准备使用DMA传输的方式,IDLE中断接收,因为IDLE中断可以设置N字节的中断方式,而modbus判断帧的方式也是基于此,
    因为没有预留485的接口,这里我用的是KPP排针的COL2,ROW2两线,对应的是LPUART8,没有读写控制,因为DAP自带有串口,可以用上,省一个串口工具
    微信图片_20181130094303.jpg

    IO初始化,复用为UART功能即可
    TIM图片20181129140029.png

    UART的初始化,正常modbus的断帧是3.5个字节,但是UART不支持,而且我们通讯没有这么频繁,暂时设为4个字节的空闲,DMA的配置是基于发送例程修改而来,看起来DMA通道的设置比较自由,不像ST的芯片,有唯一对应的通道,需要查手册。
    TIM图片20181129140130.png
    TIM图片20181129140148.png

    以上就是基于DMA的设置,因为时间比较匆忙,没有完全整明白。屏蔽的代码是设置DMA模式的,但是配了没有效果,只能收一次数据,重新设置接收地址和长度,我想要的是FIFO循环的方式接收,但是每次到达数组上限就不接收,有没有大佬指导下该怎么设置?

    发送和中断的实现
    TIM图片20181129140218.png

    TIM图片20181129140253.png

    还有一个需要注意的是芯片的cache功能,有时候会把你的接收数据优化掉,造成数据接收空白的情况,最好加上AT_NONCACHEABLE_SECTION_INIT,将数据放在非cache区域。

    我这写的是modbus主机,需要发送格式是 从机地址,功能码,寄存器地址高八位,寄存器地址低八位,寄存器数量高八位,寄存器数量低八位,CRC高八位,CRC低八位
    TIM图片20181129140355.png

    modbus从机是用Modbus Slave工具模拟的,只需要匹配程序的从机地址和寄存器地址即可
    TIM图片20181130093546.png

    TIM图片20181130093623.png

    测试结果如下
    TIM图片20181129113827.png

    TIM图片20181129113927.png

    附上modbus的源码 modbus.rar (6.35 KB, 下载次数: 63)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3297

    主题

    6542

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31909
    最后登录
    2024-3-29
    发表于 2018-11-30 16:55:37 | 显示全部楼层
    支持下
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    11 小时前
  • 签到天数: 1394 天

    [LV.10]以坛为家III

    48

    主题

    3452

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7220
    最后登录
    2024-3-29
     楼主| 发表于 2018-11-30 19:07:23 | 显示全部楼层

    感谢高管支持
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    107

    帖子

    2

    中级会员

    Rank: 3Rank: 3

    积分
    365
    最后登录
    2022-12-14
    发表于 2018-12-3 09:41:44 | 显示全部楼层
    你的调试器是啥???
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    11 小时前
  • 签到天数: 1394 天

    [LV.10]以坛为家III

    48

    主题

    3452

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7220
    最后登录
    2024-3-29
     楼主| 发表于 2018-12-3 10:33:18 | 显示全部楼层
    mars4zhu 发表于 2018-12-3 09:41
    你的调试器是啥???

    CMSIS-DAP啊。用stm32f103c8t6最小系统板刷的固件。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    107

    帖子

    2

    中级会员

    Rank: 3Rank: 3

    积分
    365
    最后登录
    2022-12-14
    发表于 2018-12-3 11:46:20 | 显示全部楼层
    morphlings2014 发表于 2018-12-3 10:33
    CMSIS-DAP啊。用stm32f103c8t6最小系统板刷的固件。

    嗯。我跟你的一样。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    107

    帖子

    2

    中级会员

    Rank: 3Rank: 3

    积分
    365
    最后登录
    2022-12-14
    发表于 2018-12-3 12:02:18 | 显示全部楼层
    morphlings2014 发表于 2018-12-3 10:33
    CMSIS-DAP啊。用stm32f103c8t6最小系统板刷的固件。

    你的能用IAR和这个CMSIS-DAP调试器下载调试吗?

    我用IAR编译之后来下载(下载到芯片内部RAM)调试,总是无法reset MCU。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    11 小时前
  • 签到天数: 1394 天

    [LV.10]以坛为家III

    48

    主题

    3452

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7220
    最后登录
    2024-3-29
     楼主| 发表于 2018-12-3 13:19:13 | 显示全部楼层
    mars4zhu 发表于 2018-12-3 12:02
    你的能用IAR和这个CMSIS-DAP调试器下载调试吗?

    我用IAR编译之后来下载(下载到芯片内部RAM)调试,总是 ...

    我电脑之前可以用IAR的,后来下载的时候老是提示错误。现在用KEIL调试的。
    你仿真器的复位脚有接板子的POR脚位吗?我用KEIL可以复位。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    107

    帖子

    2

    中级会员

    Rank: 3Rank: 3

    积分
    365
    最后登录
    2022-12-14
    发表于 2018-12-3 16:43:59 | 显示全部楼层
    morphlings2014 发表于 2018-12-3 13:19
    我电脑之前可以用IAR的,后来下载的时候老是提示错误。现在用KEIL调试的。
    你仿真器的复位脚有接板子的PO ...

    没有连接仿真器的复位引脚到板子的POR引脚。

    但是我用Keil调试完全没问题啊,Keil调试用的就是同一个CMSIS-DAP,复位方式是VECTRESET。。。。

    我估计是某些IAR的设置之类的没有搞定。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-12-16 09:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    2019-1-20
    发表于 2018-12-16 10:24:23 | 显示全部楼层
    楼主知道串口FIFO 中断方式发送接收为什么不能改变fifosize吗?直接写寄存器改变不了。。。。
    how to set rt1052 LPUART fifo depth????
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 21:17 , Processed in 0.149838 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表