问题遇到的现象和发生背景
TM512AD驱动芯片
设置1字段后,发送的数据与实际显示的正确;
设置2字段后,发送的数据与实际显示的不正确;
设置4字段后,发送的数据跟实际显示的不对应;
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
unsigned char addr_data_1[3841]={0};
//芯片上电亮灯可调,默认蓝灯,芯片写码成功后首地址亮黄灯,其他亮白灯
void Write_Tm512_Addr(unsigned short int start_addr,unsigned char hold,unsigned short int num)
{
unsigned short int i;
if(start_addr+num*Tm512_Data_Num<0xFFF) //4096
{
addr_data_1[0]=0x00;
for(i=0;i<num;i++)
{
addr_data_1[i*8+1]=0xAA;
addr_data_1[i*8+2]=0xF0;
addr_data_1[i*8+3]=0x34;
addr_data_1[i*8+4]=0x55;
addr_data_1[i*8+5]=0xAC;
addr_data_1[i*8+6]=0x80;
addr_data_1[i*8+7]=0x80|(((start_addr+i)&0x0FC0)>>6);//高6位
addr_data_1[i*8+8]=0x40|((start_addr+i)&0x3F);//低6位
}
DataL_to_DataH_V1(addr_data_1,num*8+1);//反转数据
SlaveCPU.pTransmitBuffer_U1 = &addr_data_1[0];
SlaveCPU.cTransmit_Count_U1 = (num*8+1);
TM512_IcReset(1); //复位信号时长不能小于2s
Send_En();
}
}
//传输数据时先传送字符的低位
void TM512_Test(unsigned short int num)
{
unsigned short int i;
addr_data_1[0]=0x00;
// i = 1;
for(i=0;i<num;i++) //
{
addr_data_1[i*4+1]=0x80; //第一颗R色
addr_data_1[i*4+2]=0x00; //第一颗G色
addr_data_1[i*4+3]=0x00; //第一颗B色
addr_data_1[i*4+4]=0x00; //第一颗W色
}
SlaveCPU.pTransmitBuffer_U1 = &addr_data_1[0];
SlaveCPU.cTransmit_Count_U1 = (num*4+1);
TM512_IcReset(0); //复位信号时长不能小于2s
Send_En();
}
运行结果及详细报错内容
if(++fantime2==5000)//500ms定时进入
{
TM512_Test(3);
fantime2=0;
}
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
测试一字段,完全正常;
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
设置2字段和4字段,感觉地址设置还是1字段,但字段设置成功了;
1字段(全亮),2字段(亮2色),4字段(亮4色),设置字段都对,实际显示也对;