这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » MSPM0G3507之FDCAN远程控制服务端

共7条 1/1 1 跳转至

MSPM0G3507之FDCAN远程控制服务端

助工
2024-07-21 11:38:57     打赏

【前言】

在上一篇中,我实现了使用can分析仪来实现对滑台的按制。MSPM0G3507之FDCAN远程控制直线滑台-电子产品世界论坛 (eepw.com.cn)

这一篇将实现手势传感器来实现对滑台的控制,同时将滑台的工作状态显示在OLED屏上。

【硬件】

1、LP-MSPM0G3507开发板。

2、CAN—TTL转接板

3、PAJ7620手势传感器。

4、SSD1306OLED显示屏。

5、FDCAN分析仪

【以往帖子】

在前面我已经实现了既定的一些功能,这次一次是做一个整合,帖子如下列表:

1、MSPM03507硬件I2C驱动OLED-电子产品世界论坛 (eepw.com.cn)

2、MSPM03507驱动手势传感器PAJ7620-电子产品世界论坛 (eepw.com.cn)

3、MSPM0G3507之FDCAN试验-电子产品世界论坛 (eepw.com.cn)

【主要代码】

这次只要把oled、paj7620的驱动包复制到工程中即可。

image.png主函数中,加入对两个外设的初始化,以及修改对手势的识别。

在手势识别可,如果检测到手势,则封装手势,从FDCAN中发送出去:

static void PAJ7620_GET(void)
{

    int Gesture_Data;

        Gesture_Data = PAJ7620U2_Gesture_ReadData(I2C1);
        if( Gesture_Data != PAJ_NONE )
        {
            switch (Gesture_Data)
            {
                case PAJ_UP:
                    mydoor_t.run_dir = PAJ_UP;
                    txMsg0.data[0] = mydoor_t.run_state;
                    txMsg0.data[1] = mydoor_t.run_dir;
                    /* Write Tx Message to the Message RAM. */
                     DL_MCAN_writeMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_BUF, 0, &txMsg0);
                     /* Add request for transmission. */
                     DL_MCAN_TXBufAddReq(MCAN0_INST, 0);
                    break;
                case PAJ_DOWN:
                    mydoor_t.run_dir = PAJ_DOWN;
                    txMsg0.data[0] = mydoor_t.run_state;
                    txMsg0.data[1] = mydoor_t.run_dir;
                    /* Write Tx Message to the Message RAM. */
                     DL_MCAN_writeMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_BUF, 0, &txMsg0);
                     /* Add request for transmission. */
                     DL_MCAN_TXBufAddReq(MCAN0_INST, 0);
                break;  // вниз
                case PAJ_FORWARD:
                    mydoor_t.run_dir = PAJ_FORWARD;
                    txMsg0.data[0] = mydoor_t.run_state;
                    txMsg0.data[1] = mydoor_t.run_dir;
                    /* Write Tx Message to the Message RAM. */
                     DL_MCAN_writeMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_BUF, 0, &txMsg0);
                     /* Add request for transmission. */
                     DL_MCAN_TXBufAddReq(MCAN0_INST, 0);
                break;  // вперед
                default: break;
            }
            Gesture_Data = 0;
        }

}

在接收到FDCAN的数据时,更新结构体数据:

void processRxMsg(DL_MCAN_RxBufElement *rxMsg)
{
    uint32_t idMode;
    uint32_t id;

    idMode = rxMsg->xtd;

    if (ID_MODE_EXTENDED == idMode) {
        id = rxMsg->id;
    } else {
        /* Assuming package is using 11-bit standard ID.
         * When package uses standard id, ID is stored in ID[28:18]*/
        id = ((rxMsg->id & (uint32_t) 0x1FFC0000) >> (uint32_t) 18);
    }
    switch (id) {
        case 0x4:
            mydoor_recv.run_state    = rxMsg->data[0]  ;
            mydoor_recv.run_dir      = rxMsg->data[1]  ;
            mydoor_recv.start_flage  = rxMsg->data[2]  ;
            mydoor_recv.stop_flage   = rxMsg->data[3]  ;
            break;
        default:
            /* Don't do anything */
            break;
    }
}

在主循环中,添加显示状态:

        PAJ7620_GET();

        if(Tick >= 100)
        {
            OLED_Clear();
            OLED_Printf(0,0,16,1,"PAJ:%d",   mydoor_t.run_dir);
            OLED_Printf(0,16,16,1,"RUN:%d",   mydoor_recv.run_state);
            OLED_Printf(0,32,16,1,"DIR:%d",  mydoor_recv.run_dir);
            OLED_Printf(0,48,16,1,"START:%d",   mydoor_recv.start_flage);
            OLED_Printf(64,48,16,1,"STOP:%d",    mydoor_recv.stop_flage);
            OLED_Refresh_Gram();
            DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
            Tick = 0;

        }

【实验效果】

通过手势识别后,可以通过FDCAN总线,灵活的控制远程的电机。并实时的显示远程电机的状态。






关键词: MSPM0     G3507     FDCAN     直线滑台    

高工
2024-07-21 12:08:43     打赏
2楼

感谢分享


专家
2024-07-21 12:38:08     打赏
3楼

感谢分享


高工
2024-07-21 12:53:12     打赏
4楼

感谢分享


专家
2024-07-22 08:03:38     打赏
5楼

感谢分享


高工
2024-07-22 10:38:04     打赏
6楼

感谢分享


工程师
2024-07-24 14:17:49     打赏
7楼

666666


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]