金牌会员
- 积分
- 1479
- 金钱
- 1479
- 注册时间
- 2016-1-25
- 在线时间
- 260 小时
|
发表于 2017-9-11 10:39:11
|
显示全部楼层
/* 程序功能:读取ATT7026采集到的数据
* com:表示要读的参数寄存器地址
* CS:写0~4 代表要去读取的采集板
*/
unsigned long int readatt7026(u8 ACS,u8 com){
unsigned long int data=0;
u8 i,bit;
changecs(6); //片选失能
delay_us(1);
CLK=0;
delay_us(1);
changecs(ACS); //需要拉低cs4的片选选择
delay_us(1);
for(i=0;i<8;i++){
CLK=1;
if((com&0x80))
{
DIN=1;//PC2置位
}
else
{
DIN=0;//PC2清零
}
com<<=1;
CLK=0;
}
delay_us(5);
for(i=0;i<=23;i++){
CLK=1;
bit = DOUT;
CLK=0;
data=(data<<1)|bit;
}
changecs(6);//片选失能
return data;
}//读数据程序完成
/* 程序功能:写命令到ATT7026
* com:表示要写命令的寄存器地址
* data:表示要写进寄存器地址内的数据
* CS:写0~4 代表要去写进命令的采集板
*/
void writeatt7026(u8 ACS,u8 com,unsigned long data){
u8 i;
changecs(6); //片选失能
delay_us(1);
CLK=0;
delay_us(1);
changecs(ACS); //拉低cs4的片选
delay_us(1);
CLK=1;
delay_us(2);
if((com&0x80))
{
DIN=1;
}
else
{
DIN=0;
}
com<<=1;
delay_us(1);
CLK=0;
delay_us(3);
//写进地址
for(i=0;i<7;i++){
CLK=1;
delay_us(1);
if(com&0x80)
{
DIN=1;
}
else
{
DIN=0;
}
com<<=1;
delay_us(1);
CLK=0;
delay_us(2);
}
delay_us(4);
//写进数据
for(i=0;i<=23;i++){
CLK=1;
delay_us(1);
if(data&0x00800000)
{
DIN=1;
}
else
{
DIN=0;
}
data<<=1;
delay_us(1);
CLK=0;
delay_us(2);
}
delay_us(3);
changecs(6); //拉高所有片
delay_us(1);
}
那你参考下吧 这个是我正在使用的 changcs(6)实际上就是cs 因为我是共用读写函数 所以片选区别开而已。
|
|