使用内存的并口,加上并口转串口芯片实现起来超简单
好像不行,usart的word length最多是9,加上start 和stop bit,硬件自动产生的,最多是11位,做不了18位。
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较寄存器的值。定时器设定为2.5M。这样普通的STM32都可以实现数据发送。这里注意使能预装载功能时,第一个发出的脉冲和DMA次数的关系。好在是起始位,那么发送buffer可以为17个。
可以考虑 自己模拟时序啊
可以考虑 自己模拟时序啊
摸拟时序,这个不懂
发送容易实现,麻烦的是接收呀~~
发送容易实现,麻烦的是接收呀~~
接收端不用管,客户机已经开发好了的
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较 ...
感谢支技!要接收主机的命令
如果STM32这边只发不收的话,可以考虑用DMA+PWM的方式,根据发送的内容,预先在发送buffer中设置好18个比较 ...
我这项目是定为从机的,主机发送指令,从机要回应,好多个个指令
好像不行,usart的word length最多是9,加上start 和stop bit,硬件自动产生的,最多是11位,做不了18位。 ...
主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除起始位,一次会采用24位,选择其中的17位为有效位去解析。如果两帧连续,那么可以叠加。中间有空闲帧那就不是问题了。
主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除 ...
你这招式太深奥,不会用
主机发送的帧数是否有规律。 如果有规律可以在START 位触发SPI以2.5M的速率接受,相当与2.5M的采样。扣除 ...
485属异步通信,spi属同步通信,可靠的异步通信取决于start bit的判断,通常是过采样接合一些逻辑处理,基本上由串口的硬件实现,针对这个2.5Mhz波特率的例子,用软件判断start bit不是很可行,第二,就算start bit找到,用spi通信,怎么产生时钟让数据移位呢?
使用内存的并口,加上并口转串口芯片实现起来超简单
难理解,听你说好像你做过类似的
485属异步通信,spi属同步通信,可靠的异步通信取决于start bit的判断,通常是过采样接合一些逻辑处理, ...
如你所说,异步通信是通过start bit 同步开始,然后按照约定的波特率去采样接收数据的。 那么用start bit 的第一个下降沿做触发,这时候通过(中断或DMAMUX的信号)在2.5M内启动SPI. SPI以2.5M的等间隔速率去读数据,相当与在数据位的范围内采样度数,达到了异步采用的目的。 但是采样的数据个数无法达到18位(4-16位可设定)整数,所以多收几位进来再去处理。如果连续进来的话,可以通过收到的数据位依次处理掉起始位等非数据信息。 所以要看主机那边发送的数据帧是否有规律才行。