[活动] 【APM32E030R Micro-EVB开发板评测】DTU的交互

[复制链接]
56|0
yangjiaxu 发表于 2025-8-31 12:50 | 显示全部楼层 |阅读模式
本次带来的是基于APM32E030R Micro-EVB开发板所实现的DTU模块,DTU 是 DataTransfer Unit(数据传输单元) 的缩写,是一种专门用于实现设备与远程服务器之间稳定、可靠数据传输的工业级通信设备。它的核心功能是将现场设备(如传感器、PLC、仪表等)产生的串口数据(如 RS232/RS485/RS422)或以太网数据,通过无线通信网络(如 4G/5G、NB-IoT、LoRa、GPRS 等)或有线网络,传输到云端平台或远程监控中心,同时也能接收来自平台的控制指令,实现 “双向数据交互”。我这次是使用的DTU模式是485转以太网功能。

通过原理图可知,APM32E030这款芯片有2个串口,并且都以引出,通过开发板的H2和H3是串口2,串口1引至DAPlink仿真器之中,并且通过虚拟串口实现数据交互,这样就可以省一个串口转换模块,非常不错。
图1.png
利用焊台将板载的H2和H3与GND这些排针都焊接好。
图2.png
焊接好之后,开发板这边的硬件的准备工作基本就OK了。接下来就哪一个DTU模块,本次DTU模块采用的沁恒的CH9120,自己设计的模块方便后续更换MCU。
图3.png
硬件准备工作完成之后,就可以编写代码了,其实极海的MCU开发模式我之前是使用过的,所以本次也比较熟悉也不会因为新开发板而导致开发碰壁。APM32E030可以使用IAR,keil或者是Eclipse,这里由于我的习惯,因此使用keil。使用keil要注意就是提前安装好pack,极海官方已经提前给准备好了,自己下载好并且安装就好了。安装好之后就可以通过官方提供的例程和SDK来进行开发了。
  1. int main(void)
  2. {
  3.     BOOL state = TRUE;

  4.     /* Init txDataBufUSART2 */
  5.     for (int i = 0; i < DATA_BUF_SIZE; i++)
  6.     {
  7.         txDataBufUSART2[i] = i;
  8.     }

  9.     APM_TINY_LEDInit(LED2);
  10.     APM_TINY_LEDInit(LED3);
  11.     APM_TINY_COMInit(COM1);
  12.     APM_TINY_COMInit(COM2);
  13. //    USART_EnableInterrupt(TINY_COM1, USART_INT_RXBNEIE);
  14. //    USART_EnableInterrupt(TINY_COM2, USART_INT_RXBNEIE);

  15. //    for (int i = 0; i < DATA_BUF_SIZE; i++)
  16. //    {
  17. //        /* Wait until end of transmission */
  18. //        while (USART_ReadStatusFlag(USART2, USART_FLAG_TXBE) == RESET);
  19. //        USART_TxData(USART2, txDataBufUSART2[i]);

  20. //        /* Wait until end of reception */
  21. //        while (USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == RESET);
  22. //        rxDataBufUSART1[i] = USART_RxData(USART1);
  23. //    }

  24. //    /* Verify data */
  25. //    state = BufferCompare(rxDataBufUSART1, txDataBufUSART2, DATA_BUF_SIZE);

  26. //    /* Data is ok then turn off LED2 */
  27. //    if (state == TRUE)
  28. //    {
  29. //        APM_TINY_LEDOn(LED2);
  30. //        printf("The DATA IS PASS, LED2 ON\r\n");
  31. //    }
  32.     while (1)
  33.     {
  34. //        APM_TINY_LEDToggle(LED3);
  35. //        Delay(0x7ffff);
  36. //        for (int i = 0; i < DATA_BUF_SIZE; i++)
  37. //        {

  38. //            /* Wait until end of reception */
  39. //            while (USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == RESET);

  40. //            rxDataBufUSART1[i] = USART_RxData(USART1);
  41. //                                                /* Wait until end of transmission */
  42. //            while (USART_ReadStatusFlag(USART2, USART_FLAG_TXBE) == RESET);

  43. //                                                USART_TxData(USART2, rxDataBufUSART1[i]);
  44. //                                       
  45. //        }
  46.     }
  47. }

  48. void  USART_Receive_Isr(void)
  49. {
  50.     uint8_t dat;

  51.     if (USART_ReadStatusFlag(TINY_COM1, USART_FLAG_RXBNE) == SET)
  52.     {
  53.         dat = (uint8_t)USART_RxData(TINY_COM1);
  54.                                 USART_TxData(USART2, dat);
  55. //        printf("%c", dat);
  56.     }
  57. }

  58. void  USART2_Receive_Isr(void)
  59. {
  60.     uint8_t dat;
  61.                 if (USART_ReadStatusFlag(TINY_COM2, USART_FLAG_RXBNE) == SET)
  62.     {
  63.         dat = (uint8_t)USART_RxData(TINY_COM2);
  64.                                 USART_TxData(USART1, dat);
  65. //        printf("%c", dat);
  66.     }       
  67. }


本次基于官方例程APM32E030_SDK_V1.0.3\Examples\BOARD_APM32E030_TINY\USART\USART_Polling进行开发,打开工程之后进行基本的程序初始化配置,本次使用的是9600波特率,官方使用的115200,这里需要修改,其他通过熟读代码,发现串口1与串口2均初始化完成,因此不需要自己重复配置了。接下来需要通过网络和小工具来配置CH9120。
图4.png
这里仅需要配置IP,还有网络模式,端口和目的IP,还有串口波特率这些必要参数即可。本次使用的是TCP客户端模式,波特率是9600。
由于DTU是需要收发模式,因此,这里需要开启串口1与串口2的中断接收功能,这里比较有意思,串口的中断配置可以参考USART_Interrupt这里的例程。在apm32e030_int.c中添加好串口中断的函数,在main.h添加好串口中断函数的声明。通过修改main.c中的串口中断接收使能和串口接收中断函数就可以实现DTU的收发模式的功能了。
图5.jpg
总结:通过本次的评测,觉得极海的例程还是提供的比较容易上手的,芯片的原理图设计也可以看出,芯片的外围电路设计也是比较简单,不需要过多的思考即可实现一个不错的MCU的基本运行功能。本次使用的DTU芯片也是国产的无代码芯片,仅需要简单的配置就可以实现复杂的功能,极大的帮助了开发者快速实现所想的功能。可见国产芯片正在崛起,也十分贴切国内用户的大部分的需求。最后,希望极海与21ic可以多举办一些活动,更好的与我们这些开发者进行良好且有益的互动~祝国产芯片越来越好。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

794

主题

3348

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部