7回答

0收藏

[分享] GD32之双串口调试 - RFID ID读取显示

GD32 GD32 5924 人阅读 | 7 人回复 | 2015-07-29

本帖最后由 小菜儿 于 2015-7-29 10:49 编辑



GD32F150R8 的 USART 串口有 2 个,一开始看原理图时只留意到拉到兼容 Arduino 接头的 PA2,PA3 这组 USART2 管脚,直到看了 【GD32】硬体原理&软体开发&Demo 这篇帖子之后才留意到 USART1 的 TX,RX 其实也是有拉到接头上的,知道了这样的管脚配置之后我想使用 USART2 连接 RFID 模块来读取卡上的 ID,然后将该数据由 USART1 传送出去。

所使用的 RFID 模块资料
M3650B-HA资料(V3.0).rar (2.35 MB, 下载次数: 27)


该模块可运行在主动工作模式,该模式的功能是当模块感应到卡片时会主动的从串口送出该卡片的 ID。我使用了 GD32 Colibri-F150R8 开发板配套例程里头的 uart_test.c 来实现我想要的功能,使用现有例程修改的好处就是先不用关注太多的细节设定,只需要将重点放在功能上的实现就可以了,例程里对 USART1 的波特率是设定在 115200,USART2 波特率设定在 9600,而这个刚好符合所使用模块的通讯要求。

程序中增加了 SysTick 每隔 10ms 中断一次,并对 g_Tmr1 与 g_Tmr2 计数器做减一的动作
  1. void GD32_SysTick_ISR(void)
  2. {
  3.     if(g_Tmr1 != 0)
  4.     {
  5.         g_Tmr1--;
  6.     }

  7.     if(g_Tmr2 != 0)
  8.     {
  9.         g_Tmr2--;
  10.     }
  11. }
复制代码
我们让开发板上的 2 颗 LED 在主回圈间隔 0.5s 显示翻转一次,而 g_Tmr1 就是提供了所需要的延时计数器功能。
  1. // LED flash
  2. if(g_Tmr1 == 0)
  3. {
  4.     g_Tmr1 = 50;        // 0.5s

  5.     flg = !flg;
  6.     if(flg != 0)
  7.     {
  8.         EVB_LEDControl(LED1, LED_ON);
  9.         EVB_LEDControl(LED2, LED_OFF);
  10.     }
  11.     else
  12.     {
  13.         EVB_LEDControl(LED1, LED_OFF);
  14.         EVB_LEDControl(LED2, LED_ON);
  15. }                                       
复制代码
由于串口有可能会因为不明原因(如杂讯)收到了不合法的数据而影响到了数据包的判断,因此我们规划了 g_Tmr2 计时器,当接收到第一笔数据之后在 200ms 之内要完成数据包的接收,否则会放弃该次的数据。
  1. if(USART_GetBitState(USART2, USART_FLAG_RBNE) == SET)
  2. {
  3.     if(g_Tmr2 == 0)
  4.     {
  5.         idx = 0;
  6.     }

  7.     g_Tmr2 = 20;        // 200ms

  8.     rxbuf[idx] = (USART_DataReceive(USART2));
  9.     .
  10.     .
  11.     .
复制代码
程序运行后的 USART1 输出



第一张卡连续读取 2 次



读取第 3,4 张卡



程序代码:

uart_test.rar (918 Bytes, 下载次数: 28)


评分

参与人数 1与非币 +5 收起 理由
loveeeboard + 5 三周年铜板双倍!

查看全部评分

分享到:
回复

使用道具 举报

回答|共 7 个

倒序浏览

沙发

奋斗哥

发表于 2015-7-29 10:50:48 | 只看该作者

支持,顶!!!
板凳

slotg

发表于 2015-7-29 11:21:19 | 只看该作者

奋斗哥 发表于 2015-7-29 10:50
支持,顶!!!

感谢关注
地板

trochili

发表于 2015-7-29 16:49:48 | 只看该作者

不错不错
eeboard大力支持的开源RTOS -- Trochili RTOS
5#

slotg

发表于 2015-7-29 16:56:29 | 只看该作者

trochili 发表于 2015-7-29 16:49
不错不错

感谢版主支持
6#

zhzhx66

发表于 2015-7-29 22:45:15 | 只看该作者

谢谢分享~~~~~~~~~~~~~~
7#

ropepeng

发表于 2015-7-30 10:03:41 | 只看该作者

不错,学习学习啦~~~~~~
8#

lvyunhua

发表于 2015-8-3 21:58:06 | 只看该作者

不错,支持下。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条