標題:
ATT7053BU 驅(qū)動代碼共享
[打印本頁]
作者:
wshm1127
時間:
2018-7-25 11:31
標題:
ATT7053BU 驅(qū)動代碼共享
//我們的SPI速度最高可以達到1.5M左右
//需要注意的是每次CS拉低啟動傳輸,需要給2-3us的延時時間。
//CS拉高結束數(shù)據(jù)傳輸之前也需要給出2-3us的延時時間
void Delay(unsigned int time) //一個控制信號高電平低電平時間的延時
{
int i;
for(i=0; i<time; i++);
}
unsigned long SPI_Read(unsigned char address)
{
int i;
unsigned long temp_data;
temp_data = 0;
SPI_CLK_LOW; //確保CLK初始狀態(tài)是0
Delayus(1);
SPI_CS_HIGH;
Delayus(2);
SPI_CS_LOW;
Delayus(5);
SPI_CLK_HIGH; //啟動數(shù)據(jù)傳輸
Delayus(1);
SPI_DIN_LOW; //0表示主機向從機讀數(shù)據(jù)
Delayus(1);
SPI_CLK_LOW; //從機需要在下降沿取數(shù)據(jù)
Delayus(1);
for(i=6; i>=0; i--)
{
SPI_CLK_HIGH; //啟動數(shù)據(jù)傳輸
Delayus(10);
if( (address& (0x01<<i))>>i)//(address & 0x01)
{
SPI_DIN_HIGH;
}
else
SPI_DIN_LOW;
Delayus(1);
SPI_CLK_LOW; //從機需要在下降沿取數(shù)據(jù)
Delayus(10);
}
SPI_CLK_HIGH;
Delayus(10);
SPI_CLK_LOW;
if(READ_SPI_DOUT)
temp_data = temp_data | 1;
Delayus(2); //從機接收到命令后,開始送出數(shù)據(jù),上升沿送數(shù)據(jù)
for(i=0; i<23; i++)
{
SPI_CLK_HIGH;
Delayus(10);
SPI_CLK_LOW;
Delayus(10);
temp_data = temp_data<<1;
if(READ_SPI_DOUT)
temp_data++;
Delayus(1);
}
SPI_CS_HIGH;
return temp_data;
}
void SPI_Write(unsigned char address, unsigned long write_data)
{
int i;
unsigned long temp_data;
temp_data = 1;
SPI_CLK_LOW; //確保CLK初始狀態(tài)是0
Delayus(100);
SPI_CS_HIGH;
Delayus(50);
SPI_CS_LOW;
Delayus(100);
SPI_CLK_HIGH; //啟動數(shù)據(jù)傳輸
Delayus(10);
SPI_DIN_HIGH; //1表示主機向從機寫數(shù)據(jù)
Delayus(10);
SPI_CLK_LOW; //從機需要在下降沿取數(shù)據(jù)
Delayus(10);
for(i=6; i>=0; i--)
{
SPI_CLK_HIGH; //啟動數(shù)據(jù)傳輸
Delayus(10);
if((address & (0x01<<i))>>i)
{
SPI_DIN_HIGH;
}
else
SPI_DIN_LOW;
Delayus(10);
SPI_CLK_LOW; //從機需要在下降沿取數(shù)據(jù)
Delayus(10);
}
//從機接收到命令后,開始送出數(shù)據(jù),上升沿送數(shù)據(jù)
Delayus(40);
for(i=23; i>=0; i--)
{
SPI_CLK_HIGH; //啟動數(shù)據(jù)傳輸
Delayus(10);
if((write_data & (temp_data<<i))>>i)
{
SPI_DIN_HIGH;
}
else
SPI_DIN_LOW;
Delayus(10);
SPI_CLK_LOW; //從機需要在下降沿取數(shù)據(jù)
Delayus(10);
}
SPI_CS_HIGH;
}
void ATT7053_Init(void)
{
SPI_Write(0x32, 0xBC); //Open written-protect 只能操作 40H 到 45H 的校表參數(shù)寄存器
SPI_Write(0x43, 0xFA); //I1 ADC Enable
// SPI_Write(0x43, 0xDF); //close bor
SPI_Write(0x42, 0x01FF); //I1Angle Enable, I2Angle Enable
SPI_Write(0x32, 0xA6); //Open written-protect 只能操作 50H 到 71H 的校表參數(shù)寄存器
SPI_Write(0x59, 0x0001); //模擬通道增益I1*2
Delayms(10);
SPI_Read(0x06);
}
ATT7053.zip
2018-7-25 11:31 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.57 KB, 下載次數(shù): 146, 下載積分: 黑幣 -5
實際項目代碼
作者:
gspine
時間:
2019-4-1 11:38
值得學習一下。提升一下自己
作者:
Merak
時間:
2019-6-11 18:21
請問有沒有試過不使用cs腳?
作者:
osman.li
時間:
2020-3-21 21:05
厲害,標定看著很復雜,一定很麻煩
作者:
atl0402
時間:
2020-10-7 23:17
值得學習一下。提升一下
作者:
liushiming82
時間:
2020-10-27 14:43
這個東西如何計算電壓呀
作者:
PL564
時間:
2022-12-22 09:40
標定最頭疼,搞了一天也沒有標定好,同一電器電流標定好了, 換其他電流,就不對了,也不知道怎么搞
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1