johann (27.03.2012 15:15, просмотров: 3290)
AD7699 через SPI 30MHz подключена к LPC1788. #define CFG 0x8000
#define INCC(val) (val << 12)
#define INx(val) (val << 9)
#define BW 0x0100
#define REF(val) (val << 5)
#define SEQ(val) (val << 3)
#define nRB 0x0004
unsigned short int AD7689_CFG0 = CFG | INCC(7) | INx(0) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 0
unsigned short int AD7689_CFG1 = CFG | INCC(7) | INx(1) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 1
unsigned short int AD7689_CFG2 = CFG | INCC(7) | INx(2) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 2
unsigned short int AD7689_CFG3 = CFG | INCC(7) | INx(3) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 3
unsigned short int AD7689_CFG4 = CFG | INCC(7) | INx(4) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 4
unsigned short int AD7689_CFG5 = CFG | INCC(7) | INx(5) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 5
unsigned short int AD7689_CFG6 = CFG | INCC(7) | INx(6) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 6
unsigned short int AD7689_CFG7 = CFG | INCC(7) | INx(7) | BW | REF(7) | SEQ(0) | nRB;//For ADC Channel 7
#define AD7699_SEQ_CMD (CFG | INCC(7) | INx(7) | BW | REF(2) | SEQ(3) | nRB)
const unsigned short adc_ctrl_tab_const[] = {
AD7689_CFG0, // Channel 0
AD7689_CFG1, // Channel 1
AD7689_CFG2, // Channel 2
AD7689_CFG3, // Channel 3
AD7689_CFG4, // Channel 4
AD7689_CFG5, // Channel 5
AD7689_CFG6, // Channel 6
AD7689_CFG7, // Channel 7
0} ; // Temp // Extra byte to get last LSB
Затем читаю 8 каналов:
ch_sample[0] = ssp0send_short(adc_ctrl_tab_const[0]);
ch_sample[1] = ssp0send_short(adc_ctrl_tab_const[1]);
ch_sample[2] = ssp0send_short(adc_ctrl_tab_const[2]);
ch_sample[3] = ssp0send_short(adc_ctrl_tab_const[3]);
ch_sample[4] = ssp0send_short(adc_ctrl_tab_const[4]);
ch_sample[5] = ssp0send_short(adc_ctrl_tab_const[5]);
ch_sample[6] = ssp0send_short(adc_ctrl_tab_const[6]);
ch_sample[7] = ssp0send_short(adc_ctrl_tab_const[7]);
Выходит чушь одна. Но если только один канал читать, всё равно какой из них, то получаю
значения правильно.
Может кто имеет опыт с AD7699/AD7689 или подобными подскажите пожадуста что не так делаю.