原创 MM32 MCU UART 9bit通讯功能

2020-11-26 16:31 1820 5 3 分类: MCU/ 嵌入式 文集: MM32 MCU外设篇

UART 9bit通信的作用是第9bit用于标识是地址或数据,第9bit 为1标识是从机地址,为0标识是数据,此外UART通信的第9bit也可作为数据的同步帧位使用。


在双机通讯中,UART的8bit通信的第九位一般是奇偶校验位,而多机通讯中,第九位用于标识地址或数据,常用1表示后面的是从机地址,0表示后面的是数据。我们通常希望只有被寻址的接收者才被激活,来接收随后的数据,这样就可以减少由未被寻址的接收器的参与带来的多余的UART服务开销。未被寻址的设备可启用其静默功能置于静默模式。在静默模式里,任何接收状态位都不会被设置,所有接收中断被禁止。


以MM32F013x系列MCU的UART通信为例,通过一个示例Demo介绍UART 9bit通信的同步帧方式。

如上图1所示为UART通用控制寄存器UART_CCR,在MM32F013x UM手册的第489和第490页有关于该寄存器位的详细描述。本实例用到的UART通用控制寄存器UART_CCR位说明如下:

Bit11

B8EN(rw, reset:0x00)UART同步帧发送第9bit使能控制位。该位使能后校验使能PEN不起作用。

1:使能同步帧第9bit发送。

库函数设置:

UART_Enable9bit(UART1, ENABLE)

0:禁止同步帧第9bit发送。

库函数设置:

UART_Enable9bit(UART1, DISABLE)

Bit10

B8TOG(rw,reset:0x00)UART同步帧发送第9bit自动翻转控制位。

1:使能第9bit自动翻转。

库函数设置:

UART_Set9bitAutomaticToggle(UART1, ENABLE)

0:禁止第9bit自动翻转。

库函数设置:

UART_Set9bitAutomaticToggle(UART1, DISABLE)

注:在 B8TXD 和 B8POL 的值相同时,在配置完寄存器后传输的第二个数据开始翻转,第一个数据默认为地址位。

Bit8

B8TXD(rw,reset:0x00)UART同步帧发送数据第9bit。

1:发送同步帧第9bit为高电平。

库函数设置:

UART_Set9bitLevel(UART1, ENABLE)

0:发送同步帧第9bit为低电平。

库函数设置:

UART_Set9bitLevel(UART1, DISABLE)

初始化MM32F013x UART1 9bit通信

从官网下载MM32F013x例程,以MM32F0133C7P的UART1通信为例,增加与UART 9bit通信相关的寄存器位的初始化,这里以库函数方式给出,增加的3行代码如下所示:


//Synchronous frame enable bit UART_CCR Bit11:B8EN
UART_Enable9bit(UART1, ENABLE);
//Synchronous frame transmit UART_CCR Bit8: B8TXD
UART_Set9bitLevel(UART1, DISABLE);
//Synchronous frame auto toggle UART_CCR     Bit10:B8TOG
UART_Set9bitAutomaticToggle(UART1, ENABLE);


MM32F0133C7P UART1 9bit通信,初始化代码如下所示:

  1. void bsp_UART1_9Bit_Init(u32 baudrate)
  2. {
  3. GPIO_InitTypeDef GPIO_InitStructure;
  4. UART_InitTypeDef UART_InitStructure;
  5. NVIC_InitTypeDef NVIC_InitStructure;
  6. RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
  7. RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);
  8. GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
  9. GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
  10. GPIO_StructInit(&GPIO_InitStructure);
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  12. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  14. GPIO_Init(GPIOA, &GPIO_InitStructure);
  15. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  16. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  17. GPIO_Init(GPIOA, &GPIO_InitStructure);
  18. UART_StructInit(&UART_InitStructure);
  19. UART_InitStructure.BaudRate = baudrate;
  20. UART_InitStructure.WordLength = UART_WordLength_8b;
  21. UART_InitStructure.StopBits = UART_StopBits_1;
  22. UART_InitStructure.Parity = UART_Parity_No;
  23. UART_InitStructure.HWFlowControl = UART_HWFlowControl_None;
  24. UART_InitStructure.Mode = UART_Mode_Rx | UART_Mode_Tx;
  25. UART_Init(UART1, &UART_InitStructure);
  26. UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);
  27. UART_Enable9bit(UART1, ENABLE);
  28. UART_Set9bitLevel(UART1, DISABLE);
  29. UART_Set9bitAutomaticToggle(UART1, ENABLE);
  30. NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQn;
  31. NVIC_InitStructure.NVIC_IRQChannelPriority = 3;
  32. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  33. NVIC_Init(&NVIC_InitStructure);
  34. UART_Cmd(UART1, ENABLE);
  35. }


作者: SnailWillow, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3931539.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
相关推荐阅读
SnailWillow 2020-11-30 15:56
Ubuntu 16.04 LTS 搭建Nuttx开发环境
sudo apt-get updatesudo apt-get install automake bison build-essential flex gcc-arm-none-eabi gperf ...
SnailWillow 2020-11-24 13:32
MM32 MCU LIN接口
  随着汽车电子技术的高速发展和广泛应用,实现智能化和网络化是汽车发展的必然趋势。为简化日益增加的汽车电控设备的线路连接,提升系统的可靠性和故障诊断水平,实现各电控设备之间的数据资源共享,并...
SnailWillow 2020-11-19 15:14
MM32F0130 RevC 读保护设置
一. MM32-Link配合MM32Program方式1. 在MM32Program中做读保护设置2. 在汇编程序中的设置:如使用IAR开发项目,在\Device\MM3...
SnailWillow 2020-11-18 16:27
Linux下MM32开发环境的搭建
一、 安装eclipse IDE for C/C++ developers1.准备工作需要下载两个软件包(1)JDK:http://www.oracle.com/technetwork/ja...
SnailWillow 2020-11-18 11:01
MM32 MCU Toolbox简介
MM32 MCU ToolBox主要是协助FAE解决、分析和追溯客户端的芯片的定位工具,也面向MM32 MCU用户,方便MM32 MCU用户快速定位程序进入Hardfault的原因以及脱离IDE对芯片...
广告
我要评论
0
5
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /7 下一条