上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信

说明:

        这一期是继上班摸鱼肝系列:梁山派开发板系列10.串口中断接收实验的另外一个实验,也是工作上遇到的问题,过程是这样的,我们梁山派GD32F470开发板需要接收UCChipUHFREADER发送过来的标签数据,利用的就是我们串口接收中断的功能,下面开始展示步骤,其中有记录着我遇到的问题。


文章目录

  • 系列文章目录
  • 一、物件介绍
  • 二、接线
  • 三、串口中断服务函数
  • 四、操作上位机
  • 五、现象
  • 六、遇到的问题
  • 总结

提示:以下部分代码如有更有解可在评论区一起沟通交流哈。

一、物件介绍

这是开发板和CH340: 

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第1张图片

这是UCChipUHFREADER模组:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第2张图片

 这是标签块:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第3张图片

二、接线

射频发射器TX -- 梁山派GD32板子RX
梁山派GD32板子TX -- CH340RX

用的是串口USART0接收和发送

三、串口中断服务函数

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第4张图片

 四、操作上位机

        打开rfid_reader_v1.76_2这个是RFID模组的上位机,本身也是个串口,是专门用来查看、操作标签数据的:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第5张图片        我们先连接上自己的读写器,关于这个上位机的操作是有一个参考教程文档的,我们可以到官网中查看:UCchip Docs (ucthings.com)

        我们来到下面界面,点击开始盘存,然后读写器就会读写标签信息,在串口中显示标签数据:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第6张图片

 上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第7张图片

        重点来了,我们读写器板子的电源线,既是给读写器供电的功能,也是传输数据的功能,板子上本身也有一个CH340,,我们可以通过读写器的原理图得知,我们需要飞线出来的是左边从下往上数第二个就是CH340的TX口,如下图所示:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第8张图片

         飞线完成后,我们把工程烧录到梁山派开发板中,并打开串口助手,波特率两边都是115200,串口是单片机从读写器那边接收并打印给我们的数据,然后RFID读写器上的串口显示出来的是读写器自己读出来的数据:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第9张图片

         我们在RFID上位机点击开始盘存,然后飞线连接单片机,我们来看一下现象:

五、现象

首先是没放上标签的两边的数据:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第10张图片

然后是放上标签的两边的数据:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第11张图片

我们可以看到两边的数据是一模一样的,也就是说RFID读写器发过来给单片机的数据是完整的!

另外,说一下RFID上位机,它会帮我们记录识别到的标签数据和信息,功能还是很强大的:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第12张图片

六、遇到的问题

1:为什么不用读写器板子左边的串口TX接线进行发送数据?

        串口通信是从USB口,另外一组串口是log串口,我们如果要接收读写器数据就需要像上面那样飞线出来给单片机或者其他板子的串口RX接收。

2:单片机接收出来的数据为什么只有一头一尾或者只显示部分数据呢?

        串口中断服务函数里面空闲中断中需要加上等待发送完成的代码,如下图所示:

上班摸鱼肝系列:梁山派开发板系列---13.串口中断接收实验(2) UCChipUHFREADER与GD32F470通信_第13张图片


        就是因为这行代码,没有确保等待发送完成,所以发送的数据是不完整的,这里需要提一下,我测试过,接收数据是没问题的,接收多少位和读写器上位机是对得上的,问题就在于发送出现了问题!!!

        在之前STM32的学习中我的印象中是不需要做此操作的,也不知道是不是GD32特有的,目前还没真正理解清楚,后面我再用STM32的板子证实一下。

总结

        完成了RFID读写器发送过来的标签数据然后单片机读取储存数据并在串口中打印出来的实验,也是工作中遇到的问题。

你可能感兴趣的:(单片机,嵌入式硬件,mcu,学习方法,笔记)