|

楼主 |
发表于 2023-5-31 16:02:46
|
显示全部楼层
您好,读了一下0x0310,并判断。没啥效果。还是有时候会出现曲线不连贯的现象。
#define CHART_ADDR 0x0310
#define CHART_NUM 1
#define CHART_ID 0
#define POINT_NUM 100
u16 chart_cmd[3] = {0x5AA5,CHART_NUM<<8,(CHART_ID<<8)+POINT_NUM};
sys_write_vp(CHART_ADDR,(u8*)&chart_cmd,3);
sys_write_vp(CHART_ADDR+3,(u8*)&shsh_ad1,POINT_NUM);//写100个点
do
{
sys_delay_about_ms(20);
buffer = Read_Dgus(0x0310);
sys_write_vp(0x3020,(u8*)&buffer,1);
}while(buffer);
sys_write_vp(CHART_ADDR,(u8*)&chart_cmd,3);
sys_write_vp(CHART_ADDR+3,(u8*)&shsh_ad1[POINT_NUM],POINT_NUM); //写第二个100个点
do
{
sys_delay_about_ms(20);;
buffer = Read_Dgus(0x0310);
sys_write_vp(0x3020,(u8*)&buffer,1);
}while(buffer);
sys_write_vp(CHART_ADDR,(u8*)&chart_cmd,3);
sys_write_vp(CHART_ADDR+3,(u8*)&shsh_ad1[POINT_NUM+POINT_NUM],POINT_NUM); //写第201个点到第300个点
sys_delay_about_ms(1000);
写DGUS就用的这格式应该没有错。数组shsh_ad1里装的数据代表一条平滑的曲线。我帧头5AA5...和要写入缓冲区的数据是分两条指令写入DGUS的,以前我也试过合成一条指令,没区别。 |
|