📄 drv_att7022.c
字号:
#endif
#endif //#ifdef U1_ATT7022B
return indata;
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
//// the return data shpuld be 24bits
int32 Read_Sp1_Hd(uint8 comx)
{
int32 indata=0;
#ifdef EN_U1_ON_LINE
uint8 i;
uint8 buff;
// TimeElapseStart();
IRQDisable();
//// start condition
IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
IO0CLR = AT_SSCLK_P0o;//IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
// IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IO1SET = AT_CHCS1_P1o;//IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
// IO1SET = AT_CHCS1_P1o; I01SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
DLY_3us();
//// begin transfer
IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o;
IO1CLR = AT_CHCS1_P1o;//IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o;
// IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o;
buff=comx;
for(i=0;i<8;i++){
IO0SET = AT_SSCLK_P0o; IO0SET = AT_SSCLK_P0o; //IO0SET = AT_SSCLK_P0o; IO0SET = AT_SSCLK_P0o; //; Bring SCK high
IO0SET = AT_SSCLK_P0o; //IO0SET = AT_SSCLK_P0o; //IO0SET = AT_SSCLK_P0o; IO0SET = AT_SSCLK_P0o; //; Bring SCK high
// IO0SET = AT_SSCLK_P0o; IO0SET = AT_SSCLK_P0o; //IO0SET = AT_SSCLK_P0o; IO0SET = AT_SSCLK_P0o; //; Bring SCK high
if((buff&0x80)==0x80){ //// sending address, msb first
IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
IO0SET=AT_CHDIN_P0o; //IO0SET=AT_CHDIN_P0o;
// IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
}else{
IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
IO0CLR=AT_CHDIN_P0o; //IO0CLR=AT_CHDIN_P0o;
// IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
}
buff=buff<<1;
IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //; Bring SCK low
IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //; Bring SCK low
// IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //; Bring SCK low
// IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //; Bring SCK low
// IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //; Bring SCK low
}
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Read_Sp1_Hd()");
DLY_3us(); //pause a short time
// TimeElapseStart();
IRQDisable();
//// read 24bits data
indata=0;
for(i=0;i<12;i++){
IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
// IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
indata=indata<<1;
if((IO1PIN&AT_DOUT1_P1i)==AT_DOUT1_P1i){
indata = indata | 0x00000001;
}else{
indata = indata & 0xfffffffe;
}
IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
}
////
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Read_Sp1_Hd()");
DLY_3us(); //pause a short time
// TimeElapseStart();
IRQDisable();
////
for(i=12;i<24;i++){
IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
// IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
indata=indata<<1;
if((IO1PIN&AT_DOUT1_P1i)==AT_DOUT1_P1i){
indata = indata | 0x00000001;
}else{
indata = indata & 0xfffffffe;
}
IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
}
//// treatment the negative signal
if((indata & 0x800000) == 0x800000){
indata=indata|0xff000000; //expand the negative signal
}
//// ending the process
IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IO1SET = AT_CHCS1_P1o;//IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
// IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Read_Sp1_Hd()");
#endif
return indata;
}
//////////////////////////////////////////////////////////////////////////
void Write_Sp1(uint8 comx,uint8 dataxh,uint16 dataxl)
{
#ifdef EN_U1_ON_LINE
uint8 i;
uint8 buff1;
uint32 buff2;
// TimeElapseStart();
IRQDisable();
//// start condition
IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o;//IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
// IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o; //IO0CLR = AT_SSCLK_P0o; IO0CLR = AT_SSCLK_P0o;
IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IO1SET = AT_CHCS1_P1o;//IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
// IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
DLY_3us();
//// begin transfer
IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //=0;
IO1CLR = AT_CHCS1_P1o;//IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //=0;
// IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //IO1CLR = AT_CHCS1_P1o; IO1CLR = AT_CHCS1_P1o; //=0;
buff1 = comx|0x80; //set bit7=1;
for(i=0;i<8;i++){
IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
// IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
if((buff1 & 0x80) == 0x80){
IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
IO0SET=AT_CHDIN_P0o; //IO0SET=AT_CHDIN_P0o;
// IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
}else{
IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
IO0CLR=AT_CHDIN_P0o; //IO0CLR=AT_CHDIN_P0o;
// IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
}
buff1=buff1<<1;
IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
}
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Read_Sp1_Hd()");
DLY_3us(); //pause a short time
// TimeElapseStart();
IRQDisable();
//// write 24bits data
buff2 = (((uint32)dataxh)<<16)+(uint32)dataxl;
for(i=0;i<12;i++){
IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
// IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
if((buff2 & 0x800000) == 0x800000){ //// sending address, msb first
IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
IO0SET=AT_CHDIN_P0o; //IO0SET=AT_CHDIN_P0o;
// IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
}else{
IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
IO0CLR=AT_CHDIN_P0o; //IO0CLR=AT_CHDIN_P0o;
// IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
}
buff2=buff2<<1;
IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
}
////
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Read_Sp1_Hd()");
DLY_3us(); //pause a short time
// TimeElapseStart();
IRQDisable();
////
for(i=12;i<24;i++){
IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
// IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //IO0SET=AT_SSCLK_P0o; IO0SET=AT_SSCLK_P0o; //=1;
if((buff2 & 0x800000) == 0x800000){ //// sending address, msb first
IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
IO0SET=AT_CHDIN_P0o; //IO0SET=AT_CHDIN_P0o;
// IO0SET=AT_CHDIN_P0o; IO0SET=AT_CHDIN_P0o;
}else{
IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
IO0CLR=AT_CHDIN_P0o; //IO0CLR=AT_CHDIN_P0o;
// IO0CLR=AT_CHDIN_P0o; IO0CLR=AT_CHDIN_P0o;
}
buff2=buff2<<1;
IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
// IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //IO0CLR=AT_SSCLK_P0o; IO0CLR=AT_SSCLK_P0o; //=0;
}
//// ending the process
IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IO1SET = AT_CHCS1_P1o;//IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
// IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o; //IO1SET = AT_CHCS1_P1o; IO1SET = AT_CHCS1_P1o;
IRQEnable(); // 使能IRQ中断
// TimeElapseStop("Write_Sp1()");
#endif
}
///////////////////////////////////////////////////////////////////////////////
void DLY_3us(void)
{
uint8 i;
for(i=0;i<80;i++);
}
//////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -