tag 标签: MM32F5333

相关帖子
相关博文
  • 热度 3
    2024-1-22 00:49
    626 次阅读|
    0 个评论
    拿到板卡有一段时间了,由于年底工作比较繁杂,终于有空隙来看看咱们的这次的开发板。但是先移植什么项目呢? 思来想去,还是先移植一个稍许简单的项目吧(也是比较赶时间( ^_^ ))。 一、项目介绍 项目名称:音频控制器 项目功能:1.通道切换 2.音量调节 3.对应显示 二、功能移植 1. 串口通信 1.1 遇到点问题 项目应用必不可少的自然是串口,市面大多的串口通信基本都是基于modbus的,这里本来打算移植freemodbus的,移植过程中出了一些状况。可能是时间仓促,没有完全看手册,导致了如下局面: 通过下载源码和参考例程,将所有代码基本都移植完成,然而在通讯时,发送一组数据,MCU应该进入接受中断,等待数据接收并校验和装载返回的数据后,判断是否接收完成(TC寄存器),或者中断是否为空数据(TXE寄存器)。可是在MCU收到一个字节后,立刻去判断TC或者TXE。然后导致卡死在freemodbus的发送状态机的断言处(assert( eRcvState == STATE_RX_IDLE );)。后来经过多次调试,发现TC或者TXE寄存器无论在之前如何清零或者设置不使能,MCU会在一个程序执行完立刻被置位。原因可能如下手册所说,硬件自动处理,那就根本没办法了,后来发现案例接收过程中是加了while的,所以freemodbus的程序无法执行,由于时间紧急,所以暂且放弃了,改为借鉴案例的方法。 1.2 借鉴案例 针对案例,是接收什么数据,然后原样发出去。暂且可以用用。所以是直接复制粘贴了 2. 通道切换 电路设计为简单的继电器控制,由于保密原因,不能这里展示。控制也就是简单的GPIO电平控制 3. 音频控制 这里电路设计使用了一组模拟开关,实现了音频功放中使用滑变电阻调节音量的功能。模拟开关为使用三组GPIO输出组合,使模拟开关输出八种情况,类似38译码器。电路图还是需要保密 4. OLED显示 OLED是我们自行设计的,也是长期使用一款产品了。算是比较成熟的。按照对IIC的理解,移植起来没有什么问题。不过对于OLED其实也没必要使用内置IIC控制器。因为时序比较简单。这里简单贴几行代码。 我们显示的内容由于功能的单一,显示的也比较简单 三、评测总结 1. 问题 串口问题,TXE的状态无法作为串口中断判定条件,无论人为如何清零和重置,不知道什么时候又被硬件自行设置了。 开发问题,官方资料不是很详尽。案例缺少有用注释,手册缺少注意事项。没有使用此类MCU基础的人,无法做到立刻使用。 开发问题,可能由于核心的升级,大部分下载器没法进行使用。编译器也需要针对平台进行升级,比如KEIL。如果按照官方说法,5.13以上就可以,然而到5.37后才能正常安装pack包。 2. 结论 对于如上简单的项目而言,主频的高低,不会太影响项目执行。不过180M确实比较好的,等到确实有用时,没有就会很可惜了。还有在配置串口的时候发现,GPIO等功能映射是非常灵活的,这在后期应用时也是很友好的。就目前体验来看,MM32F5333这颗芯片,还是很符合我们大部分项目需求的。 四、相关资料 modbus比较好的讲解资料: https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol-in-depth.html modbus官方资料: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf freemodbus源码详细介绍: https://blog.csdn.net/u014748120/article/details/80313215