//ADS1247寫8位
void WriteByteADS1247 (unsigned char 1_ u8WriteData) //8BIT
{
unsigned char i;
Ad1247_ DelayUs (500);
for (i=0; i<8; i++)
{
ADS1247_ SCLK1;
Ad1247_ DelayUs(500) ;
if(1_ u8WriteData & 0x80)
{
ADS1247_ DIN1;
}
else
{
ADS1247_ DIN0;
}
1_ u8WriteData <<=1;
ADS1247_ SCLK0;
Ad1247_ DelayUs(500) ;
}
Ad1247_ DelayUs(2) ;
}
//ADS1247讀8位資料
unsigned char ReadByteADS1247 (void) //8BIT
{
unsigned char i;
unsigned char l_ u8ReadDate = 0 ;
ADS1247_ CS0;
while (ADS1247_ DRDY) ;
for(i = 0; i<8; i++)
{
ADS1247_ SCLK0;
Ad1247_ DelayUs(500) ;
l_ u8ReadDate<<=1;
if (ADS1247_ DOUT)
{
l_ u8ReadDate|=0x01;
ADS1247_ SCLK1;
Ad1247_ DelayUs(500) ;
}
}
Ad1247_ DelayUs(500) ;
ADS1247_ CS0;
return l_ u8ReadDate;
}
//ADS1247初始化程式
void ADS1247_ Init (void)
{
HAL_ Delay(100);
unsigned char l u8TestValue = 0;
ADS1247_ CS1;
ADS1247_ SCLKl;
ADS1247_ CS0;
WriteByteADS1247(0x06);
ADS1247_ CS1;
HAL_ Delay(100) ;
ADS1247_ CS0; .
WriteByteADS1247(0x42); //寫 地址為0x02的暫存器
WriteByteADS1247(0x00); 1/寫一 -個暫存器
WriteByteADS1247(0x38); //寫入0x38
ADS1247_ DIN1 ;
ADS1247_ CS1;
ADS1247_ CS0; .
WriteByteADS1247 (0x22) ;//讀地址為0x03的寄存 器
WriteByteADS1247 (0x00) ; // 讀一個暫存器
WriteByteADS1247 (ADS1247_ COMMAND NOP) ;
ADS1247_ CS1;
l_ u8TestValue=https://bbs.csdn.net/topics/ReadByteADS1247();
printf("l_ u8TestValue = 0x&x\r\n",l _u8TestValue) ;
ADS1247_ CS0; .
WriteByteADS1247 (0x04) ;
ADS1247_ CS1;
}
我只是想先寫入一個資料到某一個暫存器,然后試著將它的寫入值讀出來,可是一直不正確,是哪里不對呢??
https://e2echina.ti.com/question_answer/analog/data_converters/f/58/t/198020?tisearch=e2e-sitesearch&keymatch=%20user%3A110720
這里有我的時序圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244914.html
標籤:其他硬件開發
下一篇:MPU_9250 磁力計
