問題描述: 之前的板子AD采集是正確的,但是新作出來的板子(新板有稍許改動)AD采集的結(jié)果: 有的板子是對的,有的板子是錯誤的。錯誤板子的現(xiàn)象是基準電壓(Ref+)的值都采不到。 解決方法: 在給2543的數(shù)據(jù)輸入腳送入值后,一定要延遲一定時間(目的是等待送入的值穩(wěn)定下來) 再給時鐘送上升沿。
之前程序 :
SPI_CLK_0; SPI_CS_0; for (i = 0; i < 12; i++) // Loop {
Delay_us(10);
if (cmd & 0x80) { SPI_OUT_1; } else { SPI_OUT_0; }
SPI_CLK_1;
cmd = cmd << 1; g_usADValue[iChIdx][g_iSampleNo] = g_usADValue[iChIdx][g_iSampleNo] << 1;
if (SPI_IN) { g_usADValue[iChIdx][g_iSampleNo] |= 0x0001; }
Delay_us(10);
SPI_CLK_0; } SPI_CS_1;
之后的程序
SPI_CLK_0; SPI_CS_0; for (i = 0; i < 12; i++) // Loop {
Delay_us(10);
if (cmd & 0x80) { SPI_OUT_1; } else { SPI_OUT_0; }
//一定要加這一句,否則會出問題,表現(xiàn)在有的板子是好的,有的板子有問題 //該句的目的是:在SPI_OUT加載數(shù)據(jù)后,要等待該數(shù)據(jù)穩(wěn)定 Delay_us(10);
SPI_CLK_1;
cmd = cmd << 1; g_usADValue[iChIdx][g_iSampleNo] = g_usADValue[iChIdx][g_iSampleNo] << 1;
if (SPI_IN) { g_usADValue[iChIdx][g_iSampleNo] |= 0x0001; }
Delay_us(10);
SPI_CLK_0; } SPI_CS_1;
|