sarah666 发表于 2020-9-23 11:03:48

串口通信奇偶校验位问题

STM32F207的BootLoader串口通信数据格式为:一个起始位,8个数据位,偶校验,停止位。

问题描述:
1.STM32接收到“0x7F”后进入memory boot mode,这一步没问题。之后向BootLoader(BL)发送"0x00 0xFF",不论是否有校验位,BL都能正常工作。
当BL收到无校验位的数据“0x44 0xBB”时,回复NACK的概率较高(有时可以正常工作)。这个现象如何解释?

2.发送方使用的芯片无校验位,而STM32需要偶校验,该如何进行通讯?

sarah666 发表于 2020-9-25 09:54:43

发送方用LPC3250芯片,官方描述:The three 14-clock UARTs only support a the communications format of (8N1) 8-bit data word length, 1-stop bit, no parity, and no flow control.

只能配置8位通讯,无法配置出偶校验。有没有其他办法让LPC3250与STM32 BootLoader通讯?

陌路夕颜 发表于 2020-9-24 09:26:00

工作这么多年,没见过谁用奇偶校验,而且还是bootloader。
回到你的问题,奇偶校验一般都是硬件做的,或许你的配置有问题,或者程序逻辑有问题。第二个问题,一般的做法都是把校验写在数据包中,用算法校验数据对不对,而不是用你需要的偶校验

发表于 2020-9-24 10:05:38

ST的FLASHLOADER使用的就是偶校验,这个通过配置串口的属性就可以了。如果是上位机软件可以使用flashloader的动态库,如果是mcu,在配置mcu串口时,可以选择校验方式。

cooljwu 发表于 2020-9-25 09:26:56

1进入BL应该检测数据“0x7F”同时检测校验位是否ERR;
2无校验方要选择9位通讯模式,人为计算生成第9位状态作为偶校验;

sarah666 发表于 2020-9-25 09:58:38

发送方使用LPC3250芯片,官方描述:The three 14-clock UARTs only support a the communications format of (8N1) 8-bit data word length, 1-stop bit, no parity, and no flow control.

所以只能配置8位数据,无法计算出偶校验。有没有其他方法让LPC3250与STM32 BootLoader通讯?

butterflyspring 发表于 2020-9-30 11:50:16

STM32的bootloader 是固化的内部程序,厂家规定了这个通讯需要偶校验,所以没法改变的。只能主设备那边想办法。主设备的UART不能设置奇偶校验也挺奇怪的,只能试着软件做串口了,波特率低点。

damiaa 发表于 2020-10-14 11:33:08

都设置成一样的吧。LPC3250芯片那边配一下。按理不可能不能配置偶校验的。
页: [1]
查看完整版本: 串口通信奇偶校验位问题