|
发表于 2024-7-12 09:54:41
|
显示全部楼层
可以的
- /************************************************************************** ***
- 函 数 名 : void write_dgus_vp(u32 addr,u8* buf,u16 len)
- 功能描述 : 写dgus地址数据
- 输入参数 : addr:写地址值 buf:写入的数据保存缓存区 len:字长度 //把当前的数值更新到VP地址,4字节也就是2个字
- 输出参数 :
- 修改历史 :
- 1.日 期 :
- 作 者 :
- 修改内容 : 修改读写dgus流程,不使用嵌套
- *****************************************************************************/
- void write_dgus_vp(unsigned int addr, unsigned char *buf, unsigned int len)
- {
- unsigned char i;
- // EA = 0;
- i = (unsigned char)(addr & 0x01);
- addr = addr / 2;
- ADR_H = 0x00;
- ADR_M = (unsigned char)(addr >> 8);
- ADR_L = (unsigned char)(addr);
- ADR_INC = 0x01;
- RAMMODE = 0x8F;
- while(APP_ACK == 0);
- if(i && len > 0)
- {
- RAMMODE = 0x83;
- DATA1 = *buf++;
- DATA0 = *buf++;
- APP_EN = 1;
- while(APP_EN == 1);
- len--;
- }
- RAMMODE = 0x8F;
- while(len >= 2)
- {
- DATA3 = *buf++;
- DATA2 = *buf++;
- DATA1 = *buf++;
- DATA0 = *buf++;
- APP_EN = 1;
- while(APP_EN == 1);
- len = len - 2;
- }
- if(len)
- {
- RAMMODE = 0x8C;
- DATA3 = *buf++;
- DATA2 = *buf++;
- APP_EN = 1;
- while(APP_EN == 1);
- }
- RAMMODE = 0x00;
- // EA = 1;
- }
- //写DGUS中的VP变量数据
- //addr:就是直接传入DGUS中的地址
- //buf:缓冲区
- //len:被发送数据的字数,一个字等于2个字节
- void sys_write_vp(u16 addr,u8* buf,u16 len)
- {
- u8 i;
-
- i = (u8)(addr&0x01);
- addr >>= 1;
- ADR_H = 0x00;
- ADR_M = (u8)(addr>>8);
- ADR_L = (u8)addr;
- ADR_INC = 0x01;
- RAMMODE = 0x8F;
- while(APP_ACK==0);
- if(i && len>0)
- {
- RAMMODE = 0x83;
- DATA1 = *buf++;
- DATA0 = *buf++;
- APP_EN = 1;
- len--;
- }
- RAMMODE = 0x8F;
- while(len>=2)
- {
- DATA3 = *buf++;
- DATA2 = *buf++;
- DATA1 = *buf++;
- DATA0 = *buf++;
- APP_EN = 1;
- len -= 2;
- }
- if(len)
- {
- RAMMODE = 0x8C;
- DATA3 = *buf++;
- DATA2 = *buf++;
- APP_EN = 1;
- }
- RAMMODE = 0x00;
- }
复制代码 |
|