你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

想用STM32 MCU做485通讯,一帧18位,能做到吗?

[复制链接]
立码赚 提问时间:2022-6-1 17:09 / 已解决
QQ图片20220601170734.png
RS485 一般串口一帧最多11位,但我这个项目一帧要传18位,波特率2.5M,请问怎么做?用那款芯片适合?
收藏 评论15 发布时间:2022-6-1 17:09

举报

15个回答
下次还敢 最优答案 回答时间:2022-6-6 17:14:54
使用内存的并口,加上并口转串口芯片实现起来超简单

yr 回答时间:2022-6-6 10:00:59
好像不行,usart的word length最多是9,加上start 和stop bit,硬件自动产生的,最多是11位,做不了18位。
butterflyspring 回答时间:2022-6-2 16:52:44
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较寄存器的值。定时器设定为2.5M。这样普通的STM32都可以实现数据发送。这里注意使能预装载功能时,第一个发出的脉冲和DMA次数的关系。好在是起始位,那么发送buffer可以为17个。
fafa1 回答时间:2022-6-1 17:38:27
可以考虑 自己模拟时序啊
立码赚 回答时间:2022-6-1 19:25:38
fafa1 发表于 2022-6-1 17:38
可以考虑 自己模拟时序啊

摸拟时序,这个不懂
butterflyspring 回答时间:2022-6-2 11:43:43
发送容易实现,麻烦的是接收呀~~
立码赚 回答时间:2022-6-2 16:02:32
butterflyspring 发表于 2022-6-2 11:43
发送容易实现,麻烦的是接收呀~~

接收端不用管,客户机已经开发好了的
立码赚 回答时间:2022-6-4 23:01:17
butterflyspring 发表于 2022-6-2 16:52
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较 ...

感谢支技!要接收主机的命令
立码赚 回答时间:2022-6-6 00:41:47
butterflyspring 发表于 2022-6-2 16:52
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较 ...

我这项目是定为从机的,主机发送指令,从机要回应,好多个个指令
butterflyspring 回答时间:2022-6-6 11:38:51
yr 发表于 2022-6-6 10:00
好像不行,usart的word length最多是9,加上start 和stop bit,硬件自动产生的,最多是11位,做不了18位。
...

主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除起始位,一次会采用24位,选择其中的17位为有效位去解析。如果两帧连续,那么可以叠加。中间有空闲帧那就不是问题了。
立码赚 回答时间:2022-6-6 16:41:08
butterflyspring 发表于 2022-6-6 11:38
主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除 ...

你这招式太深奥,不会用
yr 回答时间:2022-6-7 14:00:10
butterflyspring 发表于 2022-6-6 11:38
主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除 ...

485属异步通信,spi属同步通信,可靠的异步通信取决于start bit的判断,通常是过采样接合一些逻辑处理,基本上由串口的硬件实现,针对这个2.5Mhz波特率的例子,用软件判断start bit不是很可行,第二,就算start bit找到,用spi通信,怎么产生时钟让数据移位呢?
立码赚 回答时间:2022-6-7 18:34:32
下次还敢 发表于 2022-6-6 17:14
使用内存的并口,加上并口转串口芯片实现起来超简单

难理解,听你说好像你做过类似的
butterflyspring 回答时间:2022-6-8 11:03:08
yr 发表于 2022-6-7 14:00
485属异步通信,spi属同步通信,可靠的异步通信取决于start bit的判断,通常是过采样接合一些逻辑处理, ...

如你所说,异步通信是通过start bit 同步开始,然后按照约定的波特率去采样接收数据的。 那么用start bit 的第一个下降沿做触发,这时候通过(中断或DMAMUX的信号)在2.5M内启动SPI. SPI以2.5M的等间隔速率去读数据,相当与在数据位的范围内采样度数,达到了异步采用的目的。 但是采样的数据个数无法达到18位(4-16位可设定)整数,所以多收几位进来再去处理。如果连续进来的话,可以通过收到的数据位依次处理掉起始位等非数据信息。 所以要看主机那边发送的数据帧是否有规律才行。
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版