历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2020年01月20日 | STM32L1学习笔记05 串口校验位与数据位的一个坑

2020-01-20 来源:eefocus

引言

今天被一个坑给坑了,难以平静,记录下。


ST的HAL库串口结构体 UART_InitTypeDef 的 WordLength 不单单是指数据位!
ST的HAL库串口结构体 UART_InitTypeDef 的 WordLength 不单单是指数据位!
ST的HAL库串口结构体 UART_InitTypeDef 的 WordLength 不单单是指数据位!

气人的话说三遍!


如果你有用到了奇偶校验的话,一定要在数据位数再加1。血淋淋的教训,浪费了本尊半天的生命,分分钟几百万上下的宝贵时间,居然被这细节给绊倒了!


原因分析

    ST的注释有误导嫌疑

    uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
    This parameter can be a value of @ref UART_Word_Length */

    Semtech的串口驱动 uart-board 有不足

是的,作为一个官方库,还没考虑足够多的细节。在这里头就得把WordLength给准备好,一旦有奇偶校验,得给WordLength+1处理。


翻看串口例程

/*##-1- Configure the UART peripheral ######################################*/
/* Put the USART peripheral in the Asynchronous mode (UART Mode) */
/* UART configured as follows:
  - Word Length = 8 Bits (7 data bit + 1 parity bit)
  - Stop Bit    = One Stop bit
  - Parity      = ODD parity
  - BaudRate    = 9600 baud
  - Hardware flow control disabled (RTS and CTS signals) */
UartHandle.Instance        = USARTx;

UartHandle.Init.BaudRate   = 9600;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits   = UART_STOPBITS_1;
UartHandle.Init.Parity     = UART_PARITY_ODD;
UartHandle.Init.HwFlowCtl  = UART_HWCONTROL_NONE;
UartHandle.Init.Mode       = UART_MODE_TX_RX;

从这个例程注释才发现了端倪!


总结

在STM32中WordLength需要包含数据位数和奇偶校验的位数

如果需要8位数据,无奇偶校验,则WordLength=8
如果需要8位数据,有奇偶校验,则WordLength=9

推荐阅读

史海拾趣

鑫雁公司的发展小趣事

聚洵半导体始终坚持以市场为导向、以创新为驱动的发展理念。公司不断加大新产品研发投入,致力于在低功耗运放、高速运放、仪表放大器等领域取得更多技术突破。同时,聚洵还积极关注行业动态和市场趋势,针对医疗电子、工业控制、汽车电子等新兴领域推出了一系列创新产品。展望未来,聚洵将继续保持专注和创新精神,致力于成为国内领先的信号链模拟芯片设计公司之一,为电子行业的发展贡献更多力量。

Atlantic Microwave Ltd公司的发展小趣事

随着电子行业的快速发展,Atlantic Microwave Ltd公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。公司投入大量研发资金,吸引了一批优秀的科研人才,专注于微波技术的研发与创新。经过数年的努力,公司成功推出了一款具有颠覆性的微波产品,凭借其卓越的性能和稳定性,迅速获得了市场的认可,为公司带来了可观的收益。

Elektron公司的发展小趣事

Elektron公司的故事始于1942年,由威利·科伯以Elektron物理技术设备工厂Kerber的名称成立。当时,该公司主要生产基于汞蒸气整流器的固定电池电源和船用电池充电器。这些产品在市场上取得了良好的反响,为公司的发展奠定了坚实的基础。在随后的几年里,Elektron不断扩大产品范围,开始涉足汽车行业的电池充电器以及焊接和切割工艺的电源等领域。

Electro-Optical Systems Inc公司的发展小趣事

为了保持技术领先地位和市场竞争力,EOS不断加大研发投入,积极推动产品创新。他们与多所知名高校和研究机构建立产学研合作关系,共同开展前沿技术研究。同时,EOS也积极拓展国际市场,产品出口到欧美、东南亚等多个国家和地区。通过持续创新和国际拓展,EOS在红外探测器领域的地位日益稳固。

Glorious Sources Co Ltd公司的发展小趣事
如加入自动增益控制(AGC)电路以自动调节放大倍数,或加入数字信号处理技术以提高信号处理的精度和效率。
Brainboxes公司的发展小趣事

Brainboxes拥有一流的内部制造设施和全球供应链,这使得公司在产品研发和生产方面具有极大的灵活性。内部制造设施保证了产品的高品质和快速交付,而全球供应链则确保了公司能够及时获取所需的原材料和零部件。这种高效的生产模式使得Brainboxes能够迅速响应市场需求,为客户提供优质的产品和服务。

问答坊 | AI 解惑

电子工程师简历模板(中文版)

工程师简历模板 本人概况   姓名:XXX    性别:男   民族:汉    政治面目:团员   学历(学位):学士   专业:工业电器自动化   联系电话:12345678   手机:139000234   联系地址:北京市东城区XX大街10号  邮编:100 ...…

查看全部问答>

本科毕业设计要求论文翻译,求一篇适合翻译的英文论文

导师说要我自己去找。 要求是关于FPGA的,或者DS18b20的文章也可以! 然而我以前收藏的资料中,都觉得不太适合。 因为这论文篇幅不能太长,最好能控制在5页上下。 具有一定可读性,不要全是公式什么的,呵呵! 所以我来求助了!!! 望有 ...…

查看全部问答>

ISE如何烧程序到芯片里呢

ISE如何烧程序到芯片里面呢?…

查看全部问答>

关于天津索思的WT-900型表

以前公司进了几块天津索思的WT-900型表。现在表有点不准,听别人说900型有工厂模式,可以通过工厂模式来调。 请问各位,有谁知道怎么进入工厂模式?谢谢 …

查看全部问答>

求助!信号问题

怎么样用单片机采集正弦信号的幅值和频率!小弟做一个多参数测试仪,要求给一个正弦信号,采集它的幅值和频率。…

查看全部问答>

图象处理算法

用摄相头拍出一件物品的照片,如何用计算机程序计算出它是否为一个标准的矩形…

查看全部问答>

PCB的core常见厚度有哪几种?

PCB的core常见厚度有哪几种?固化片的厚度一般是多少?…

查看全部问答>

IO开漏输出

                                 把IO设置成开漏输出,接10K电阻上拉到5V,然后IO接7407(7407电源接5V)的输入端,请问这样接有没有问题,…

查看全部问答>

UARTDMA的疑惑

                                 STM32的DMA是个好东西,AD和Uart发送用起来很爽,但是我在想,如果用DMA做UART的接收,情况就有点麻烦,如果全双工 ...…

查看全部问答>

LM3S811学习进行中问题不断

各位朋友我看了几天的资料,我终于下定决心弄一弄我的小lm3s811开发板了,但是遇到了一些问题, 1.我的keil建立工程为什么不显示工程名字呢,我起的工程名为lm3s811可是显示的是这样的 2.即使我不自己建立工程,我把从网上网友分享的文件打开, ...…

查看全部问答>