本帖最后由 Dl2k 于 2021-10-28 10:30 编辑

灵动MM32 eMiniBoard (MM32F3270)

首先非常有幸获得了评测本产品的机会,收到东西还是很开心的。
这次的包装里赠送了一个非常实用又漂亮的环保袋,好评。已经被家里宝宝拿去买零食用了。

IMG_5486.png

这次板子的内容还是很环保的。

IMG_5491.png

总体上板子做工还是不错的,不过丝印似乎有一点点不是很直观,旁边的排针确实搞不清楚具体是什么作用。期待可以改进。
MM32作为从STM32有延伸意义的芯片,总体上都是arm架构的mcu,笔者用过stm32,也用过gd32,这次使用mm32觉得总体上是差不多。但是看资料以后暂时没有对本款芯片找到一个对应的产品。

下面说一下本次打算用这个板子做一个什么东西。
由于我们公司的一款产品是多个位置使用can通信来进行串接的,对于各个位置的设置配置,都是用can通信,但是目前都是是用一款can转ethernet的产品,再通过电脑连接网线来进行配置的。一旦产品送到客户那里,再使用电脑进行配置就有些不变。所以一直有制作一款集配置,调试,数据通信监控等多功能于一体的便携设备。这次就打算用这块开发板为原型进行开发设计。

具体的目标功能如下:

  • 具备公司私有can协议的数据收发能力。
  • 可以将接收到的can数据保存在flash里面(或者是tf卡)
  • 能够用usb连接到电脑上打开保存的can数据的文件,并复制到电脑上分析
  • 使用一块oled到屏幕作为一些交互操作的显示作用。
  • 通过按键选择交互操作,发送预置的can指令。


由于功能还是比较多的,所以不可能在本次测试过程中全部完成。现在结合产品来讲一下具体的进度。

我一开始基本上只使用can,串口,led, 按键,usb等功能,所以暂时不用下面的排针。所以为了保护开发板,避免意外造成短路等问题。自己3D打印了一个外壳。

IMG_5563.png

这块板子使用的是MM32F3270芯片中的F3277G7(LQFP64)芯片,有120MHz的主频,还是很高的。
根据原理图和参考例程,很快就搞定了基本的can收发功能。连接到我们的can转ethernet设备,用电脑上位发送接收都没有什么问题。具体我这边采用的Ext扩展标准的,并且是数据帧。数据帧内的私有协议就不赘述了。

还有一点补充一下,mm32这次带的例程分为寄存器版本和hal库2种,笔者之前都是keil的开发环境,并使用标准库的。所以适应花了一些时间。好在也就是一个熟悉的过程。

贴一些代码
  • s32 main(void)
  • {
  •         u8 iret,c;
  • //        CanPeliRxMsg msg;
  •         DELAY_Init();
  •         LED_Init();
  •         CONSOLE_Init(9600);
  •         CAN_GPIO_Init();
  •         CAN_Config(CAN_200K, ExtendedFrame_SingleFilter, 0x101, 0x000, 0x00, 0x00);
  •         while(1) {
  •     CAN_Peli_Receive(&CanPeliRxMsgStruct);
  • if(CanPeliRxMsgStruct.ID == 0x101)
  •                 {
  •                         LED1_ON();
  •                         memcpy(sMsg.Data, CanPeliRxMsgStruct.Data,CanPeliRxMsgStruct.DLC);
  •                         sMsg.DLC = CanPeliRxMsgStruct.DLC;
  •                         CAN_SendFrame(&sMsg);
  • //      printf("%s\n",sMsg.Data);
  •                         LED1_OFF();
  •                 }
  • }
  • 复制代码
    Can基本的收发,可以把收到的消息发送回去,后续直接对接到私有协议处理上就OK了。

    在完成了这一步之后,我准备完成can数据的记录工作。因为我打算是把数据存放在外部flash上,我们板载的比较小,这个之后可以自己买芯片替换。主要问题是我打算在flash上建立文件系统,为后续usb连接模拟u盘做准备。stm32是由自己的库来实现这个功能的,但是我发现mm32这边相关的资料比较少。主要是例程没有,这个可就需要花一些时间来摸索了。

    既然暂时没有文件系统,那么就考虑先随便写在外部flash里面,然后再用串口命令来读取数据。

    结果就是这目标改变,变成了一个悲剧开始。

    这块板子自带mm32link烧录工具,同时完成了一个虚拟的串口直接连接到了 Uart1上面,我移植了一段stm32和gd32上都很成熟的串口命令解析的代码上去。
    想着这个一根usb线就搞定烧录和串口调试,还挺方便的。结果:

    _HB
    COMM

    _HB
    COMM

    _HB
    COMM
    我收到的是这样的数据

    串口输出直接吧我的内容分段了,当中还加了 0D 的回车
    这是什么鬼。。。然后再跟踪我发送的命令,也是无法正确解析的。

    我考虑可能是串口1接在MMLINK上,有bug,所以随即使用串口2,
    增加了串口2的初始化代码。
  •                 RCC_APB1PeriphClockCmd(RCC_APB1ENR_UART2, ENABLE);   //enableUART2,GPIOAclock
  •     RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);  //
  •                
  •     GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_7);
  •     GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_7);
  •                 //UART2_TX   GPIOA.2
  •     //GPIO_StructInit(&GPIO_InitStruct);
  •     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
  •     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  •     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
  •     GPIO_Init(GPIOA, &GPIO_InitStruct);
  •     //UART2_RX    GPIOA.3
  •     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
  •     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  •     GPIO_Init(GPIOA, &GPIO_InitStruct);
  •         
  •                 UART_StructInit(&UART_InitStruct);
  •     UART_InitStruct.UART_BaudRate = baudrate;
  •     UART_InitStruct.UART_WordLength = UART_WordLength_8b;
  •     UART_InitStruct.UART_StopBits = UART_StopBits_1;//one stopbit
  •     UART_InitStruct.UART_Parity = UART_Parity_No;//none odd-even  verify bit
  •     UART_InitStruct.UART_HardwareFlowControl = UART_HardwareFlowControl_None;//No hardware flow control
  •     UART_InitStruct.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; // receive and sent  mode
  •     UART_Init(UART2, &UART_InitStruct); //initial uart 2
  •     UART_Cmd(UART2, ENABLE);                    //enable uart 2
  • 复制代码
    IMG_5561.png
    串口2我用了一个自制的ch340的usb转TTL线连上测试,结果更奇怪了。
    首先我发送的命令,在板子上会多接收到一个 0A 在第一个字节,也就是在命令前。
    板子上返回的数据我接收到也是不对的,每次一个字节。

    微信图片_20211027233014.png

    微信图片_20211027232953.png

    目前项目没有完成。 因为月底前公司项目很紧张,暂时可能无法在评测截止前得到一个可用的功能了。
    估计会在下个月抽空再继续搞。


    CAN_D.zip (6.04 MB, 下载次数: 2)
    举报
    您需要登录后才可以评论 登录 立即注册
    全部回复 0
    暂无评论,快来抢沙发吧