bigbaicai

芯方式是以半导体人、电子工程师等电子行业相关领域从业人员为核心的知识经验学习、分享、交流社群。 凭借开放、合作、共赢的运营理念,聚集了来自国内外知名院校和顶尖科技公司的半导体人、电子工程师。 我们致力于营造专业、认真、有温度的分享交流环境,将高质量的内容和方案成规模地生产和分享,帮助个人和团队在芯方式找到有价值的Key。 http://www.icfans.com/

11A/11B上AT CMD (AT命令)调试LCM参考代码

0
阅读(992)

[DESCRIPTION]
使用AT CMD调试LCM,11A/11B上,参考代码
[SOLUTION]
1.在customer_at_command.c中添加
kal_uint32 at_data[60];
extern kal_bool at_test_get_lcd_ownership(kal_uint32 lcm_id,kal_uint32 *d);
void custom_get_value(char *full_cmd_string, kal_uint8 index)
{
kal_uint32 temp,i;
at_data[0] = 0;
i = 1;
temp = 0;
while(full_cmd_string[index])
{
switch(full_cmd_string[index])
{
case ',':
at_data[i] = temp;
at_data[0]++;
if(at_data[0] == 9) return;
temp = 0;
index++;
i++;
break;
case 13:
at_data[i] = temp;
at_data[0]++;
return;
default:
if(full_cmd_string[index] >= '0' && full_cmd_string[index] <= '9')
{
temp = temp * 16 + full_cmd_string[index] - '0';
index++;
}
else if(full_cmd_string[index] >= 'a' && full_cmd_string[index] <=
'f')
{
temp = temp * 16 + full_cmd_string[index] - 'a' + 10;
index++;
}
else return;
}
}
}
并在custom_command_hdlr()函数中添加:
else if(strcmp(cmd_name, "DO") == 0)
{
kal_prompt_trace(MOD_ENG,"MY AT TEST ");
custom_get_value(full_cmd_string,index+1);
kal_bool at_test_get_lcd_ownership(0,at_data);//对主屏进行AT Test
}
2.在lcd.c文件尾添加:
extern kal_bool LCD_Physical_Interface_Lock(void);
extern kal_bool LCD_Physical_Interface_Unlock(void);
kal_bool at_test_get_lcd_ownership(kal_uint32 lcm_id, kal_uint32 *d)
{
lcd_power_ctrl(KAL_TRUE);
if (KAL_TRUE != LCD_Physical_Interface_Lock())
{
lcd_power_ctrl(KAL_FALSE);
return KAL_FALSE;
}
// For LCM device, rewrite interface settings.
if (lcm_id == 0)
{
DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,MAIN_LCD_CMD_ADDR);
DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,MAIN_LCD_DATA_ADDR);
}
#ifdef DUAL_LCD
if (lcm_id == 1)
{
DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,SUB_LCD_CMD_ADDR);
DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,SUB_LCD_DATA_ADDR);
}
#endif
//TODO:
/*******此处根据自己需求,添加AT 命令************/
。。。
。。。
/*******此处根据自己需求,添加AT 命令************/
while( LCD_IS_RUNNING ) { }
STOP_LCD_TRANSFER;
DRV_Reg(LCD_INT_STATUS_REG);
LCD_Physical_Interface_Unlock();
lcd_power_ctrl(KAL_FALSE);
return KAL_TRUE;
}

ICFANS