打印
[活动专区]

赛元易码魔盒体验14 ——综合测试

[复制链接]
679|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 一路向北lm 于 2020-8-14 15:43 编辑

为了综合测试使用魔盒生成的模块代码,本人使用Qt写了一个简单的界面,通过和赛元SC95F8617的串口进行通讯,简单控制自己这块基于SC95F8617的板卡的外设。界面如下:

使用特权

评论回复

相关帖子

沙发
一路向北lm|  楼主 | 2020-8-14 15:39 | 只看该作者
本着开源的精神,将Qt的界面开源,虽然此界面很简陋,也存在着一些bug,希望可以供Qt的初学爱好者来参考。

使用特权

评论回复
板凳
一路向北lm|  楼主 | 2020-8-14 15:39 | 只看该作者
1.        上位机界面:
上位机软件分为通讯部分和操作控制部分。
通讯部分,主要包括串口的配置,这里就是串口端口的自动搜索、波特率的配置、数据位的配置、停止位的配置、校验位的配置。最小方的两个按钮,一个用于刷新新接入的端口,一个是打开和关闭串口操作。

使用特权

评论回复
地板
一路向北lm|  楼主 | 2020-8-14 15:39 | 只看该作者
操作控制部分:主要是对LED的控制,打开板卡的LED的亮灭;对蜂鸣器的控制,打开板卡的蜂鸣器的开关;按键状态的检测;数码管四位数字的指定显示;实时ADC数字采集;EEPROM的指定地址和长度的读写等。

使用特权

评论回复
5
一路向北lm|  楼主 | 2020-8-14 15:40 | 只看该作者
2. SC95F8617 下位机Demo
此部分主要分为外设的初始化和串口数据的解析:这里初始化的GPIO、外部中断、ADC、串口、TWI、定时器等。
SC_GPIO_Init();
        SC_OPTION_Init();
        SC_INT_Init();
        SC_ADC_Init();
        SC_UART0_Init();
        SC_USCI0_Init();
        SC_TIM3_Init();


使用特权

评论回复
6
一路向北lm|  楼主 | 2020-8-14 15:40 | 只看该作者
串口数据的解析。
/*****************************************************
*函数名称:void UartRecvAnalysisDeal(void)
*函数功能:解析串口接收数据处理
*入口参数:void
*出口参数:void
*****************************************************/
void UartRecvAnalysisDeal(void)
{
    UartRecv();
     if(RecvFlag==1) //判断是否接收完
                 {
                         RecvFlag = 0;
                         Uart_Send_String(RecvBuf);
                   if(RecvBuf[0] == '#') //判断启示标志位
                         {
                           //1.LED
                                 if((RecvBuf[1]=='L')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='D'))
                                 {
                                    if (RecvBuf[4] == '0')
                                                {
                                                   LED_OFF;
                                                         Uart_Send_String("#LED0\r\n");
                                                }                                                       
                                                       
                                          if (RecvBuf[4] == '1')
                                                {
                                                   LED_ON;
                                                         Uart_Send_String("#LED1\r\n");  
                                                }                                                                                                       
                                 }
                                 //2.BEP
                                 else if((RecvBuf[1]=='B')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P'))
                                 {
                                    if (RecvBuf[4] == '0')
                                                {
                                                   BEP_OFF;
                                                         Uart_Send_String("#BEP0\r\n");
                                                }
                                          if (RecvBuf[4] == '1')
                                                {
                                                   BEP_ON;
                                                         Uart_Send_String("#BEP1\r\n");  
                                                }                 
                                 }                                 
                                 //3.SMG
                                 else if((RecvBuf[1]=='S')&&(RecvBuf[2]=='M')&&(RecvBuf[3]=='G'))
                                 {
                                    
                                          num1 = RecvBuf[4] - 0x30;
                                          num2 = RecvBuf[5] - 0x30;
                                          num3 = RecvBuf[6] - 0x30;
                                          num4 = RecvBuf[7] - 0x30;                                                                              
                                 }                       
                                 //5.EEPROM Write
                                 else if((RecvBuf[1]=='E')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P')&&(RecvBuf[4]=='W'))
                                 {                                   
            startaddr = (RecvBuf[5]-0x30)*100 +(RecvBuf[6]-0x30)*10 + (RecvBuf[7]-0x30);
            len = (RecvBuf[8]-0x30)*100 + (RecvBuf[9]-0x30)*10 + (RecvBuf[10]-0x30);
            dater = (RecvBuf[11]-0x30)*100 + (RecvBuf[12]-0x30)*10 + (RecvBuf[13]-0x30);       
                                          for(i=startaddr;i<len;i++)
                                          {
                                             EEPROM_WriteOneByte(i,dater);
                                                   USCI0_TWI_Delay(2500);
                                                         USCI0_TWI_Delay(2500);
                                          }
                                                // Uart_Send_String("写入完成\r\n");  
                                          
                                  }
                                        //6.EEPROM Read
                                         else if((RecvBuf[1]=='E')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P')&&(RecvBuf[4]=='R'))
                                         {
                                           startaddr = (RecvBuf[5]-0x30)*100 +(RecvBuf[6]-0x30)*10 + (RecvBuf[7]-0x30);
             len = (RecvBuf[8]-0x30)*100 + (RecvBuf[9]-0x30)*10 + (RecvBuf[10]-0x30);
                                                  
                                                 for(i=startaddr;i<len;i++)
                                           {
                                                                temp = EEPROM_ReadOneByte(i);
                      Uart_Send_Byte('!');
                                                          Uart_Send_Byte(temp/100+0x30);
                                                          Uart_Send_Byte(temp%100/10+0x30);
                                                          Uart_Send_Byte(temp%10+0x30);
                                           }
                                                 Uart_Send_Byte('\r');
                                                 Uart_Send_Byte('\n');
                                         }                                                 
                                 }
                 }
}


使用特权

评论回复
7
一路向北lm|  楼主 | 2020-8-14 15:40 | 只看该作者
本帖最后由 一路向北lm 于 2020-8-14 15:42 编辑

好了,最后附上上位机和下位机的Demo代码,和展示视频供大家参考,这次基于魔盒的工程就到这里,最后希望赛元的魔盒越来越优秀!
下位机.zip (854.65 KB) Qt上位机.zip (84.57 KB)



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

275

主题

3784

帖子

76

粉丝