请教STM32F103的DMA空闲接收问题
STM32F103VCT6通过串口1烧录程序问题
有使用过POWERBUS二总线芯片的吗
消防二总线通讯?
F103的IIC支持高速400K频率吗?
为什么用cubemax生成f103c8t6的freertos在编译时会报错
CUBEIDE打开一个工程,怎么改变主控芯片的同系列型号?
STM32F103 使用PA9输出PWM问题
STM32F103C8T6是否支持TIM3的PWM边沿触发AD采集
HAL_I2C_Mem_Read 一直返回 BUSY
微信公众号
手机版
从实际应用 来说,一般可以通过判断发送标志位,当发送完成后,即可进行下次的发送。可以使用中断的方式。
情况是这样的,CAN总线上只有我配置的一主一从,主机轮询从机的各种状态,主机给从机发送指令的间隔大约是多少合适,两个芯片都用的STM32F103C8T6
嗯,我现在就是采用20毫秒的间隔发送一次数据
举个例子,如果发送的信息由于某些原因没有得到接收发的应答,那么按照协议就会重发(期间还可能有一些其他帧数据在总线上,具体可以用CAN 盒子监控),这时候的时间就是不固定的。如果出错到一定次数,该节点还会退出。 所以涉及到的因素很多,没有固定的公式计算。can 协议只保证发送的成功和准确,速度不是追求的重点。所以实际测试最好,留有一定的余量。
嗯,感谢您的耐心解答,经过我的测试,不能使用硬件重发功能,否则如果连续三次发送失败,就会影响整个网络上的数据传输,这就好比三个邮箱都占满了,因为有硬件重发机制的存在,他们就会在经过仲裁后,重新发送,可是如果发送失败就会一直发送,所以这样就导致了堵塞,现在我是把硬件重发机制去掉了,这样每次发送都是发送一次,不管是否成功,再加上20毫秒左右的延时时间,保证发送邮箱为空,可以再次被调用,这样就可以了
一般不用硬件重发功能,这样会导致网络出问题的,比如波特率设置错误后,会导致总线错误。