TI中文支持网
TI专业的中文技术问题搜集分享网站

有ADS1118评估板用热电偶测温度的C示例程序吗?

主页给的是labview的,没那个软件,估计也看不太懂,有用C写好的吗?

HaiTao Li:

      论坛里面没有完整的。

Luke Sun:

hi haichao shen,

      没有非常规范的C样例程序,建议你参考 http://e2e.ti.com/support/data_converters/precision_data_converters/f/73/t/231496.aspx

HaiTao Li:

回复 Luke Sun:

        呃,不同系列的MCU用的程序还是不一样的吧…….想找那种完全可以参考的很难了

HaiTao Li:

回复 HaiTao Li:

        可以考虑CCS5.3里面的例子程序,MCU与ADS1118主要就是四线SPI的通讯,在CCS5.3里面有现成的SPI通讯例子,通过Lauchpad连接ADS1118,ADS1118取六根线简易焊接就成,能快速测试。不过这种方式用MSP430F/G的MCU。

        寄存器配置都在手册上有,建议从低采样率和1倍放大可是测试。

        如果要是做评估的话,实验板严格按照手册制作。

        如果不打算做实验板的话,那还是买个EVM什么的吧。

shen:

回复 HaiTao Li:

谢谢楼上几位,这里回复快多了。我先去做一个实验板,回来参考手册编写程序试试吧

Wayne Xu:

我这里有基于MSP430 Launchpad的C语言程序,这是为ADS1118 Booster Pack设计的程序。ADS1118 Booster Pack即将release.

下面把关键代码贴在论坛里。如有问题也可以发email给我。

我在头文件里定义了

//Set the configuration to AIN0/AIN1, FS=+/-0.256, SS, DR=128sps, PULLUP on DOUT#define ADSCON_CH0 (0x8B8A)//Set the configuration to AIN2/AIN3, FS=+/-0.256, SS, DR=128sps, PULLUP on DOUT#define ADSCON_CH1 (0xBB8A)

下面是C语言程序的两个关键函数。

int WriteSPI(unsigned int config, int mode){ int msb; unsigned int temp; char dummy;

//change the polarity of UCI0B_CLK to driver ADS1118. UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCMSB + UCMST + UCMODE_0 + UCSYNC; UCB0CTL1 &= ~UCSWRST;

temp = config; if (mode==1) temp = config | 0x8000; // mode == 1, means to read the data and start a new convertion.

while(!(UC0IFG&UCB0TXIFG)); UCB0TXBUF = (temp >> 8 ); // Write MSB of Confige while(!(UC0IFG&UCB0RXIFG)); msb=UCB0RXBUF; // Read MSB of Result

while(UCBUSY & UCB0STAT);

while(!(UC0IFG&UCB0TXIFG)); UCB0TXBUF= (temp & 0xff); // Write LSB of Config while(!(UC0IFG&UCB0RXIFG)); msb = (msb << 8) | UCB0RXBUF ; //Read LSB of Result

while(UCBUSY & UCB0STAT);

while(!(UC0IFG&UCB0TXIFG)); UCB0TXBUF = (temp >> 8 ); // Write MSB of Config while(!(UC0IFG&UCB0RXIFG)); dummy=UCB0RXBUF; // Read MSB of Config

while(UCBUSY & UCB0STAT);

while(!(UC0IFG&UCB0TXIFG)); UCB0TXBUF= (temp & 0xff); // Write LSB of Config while(!(UC0IFG&UCB0RXIFG)); dummy=UCB0RXBUF; //Read LSB of Config

while(UCBUSY & UCB0STAT);

//change back the polarity of UCI0B_CLK for deriving LCD UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCCKPL + UCMSB + UCMST + UCMODE_0 + UCSYNC; UCB0CTL1 &= ~UCSWRST;

return msb;}

/****************************************************************************** * function: ADS_Read(unsigned int mode) * introduction: read the ADC result and tart a new conversion. * parameters: * mode = 0, ADS1118 is set to convert the voltage of integrated temperature sensor. * mode = 1, ADS1118 is set to convert the voltage of thermocouple. * return value:result of last conversion */int ADS_Read(unsigned int mode){ unsigned int tmp; int result;

if(flag & BIT9) { if (mode==1) // Set the configuration to AIN0/AIN1, FS=+/-0.256, SS, DR=128sps, PULLUP on DOUT tmp = ADSCON_CH1; else tmp = ADSCON_CH1 + ADS1118_TS;// temperature sensor mode.DR=8sps, PULLUP on DOUT } else { if (mode==1) // Set the configuration to AIN0/AIN1, FS=+/-0.256, SS, DR=128sps, PULLUP on DOUT tmp = ADSCON_CH0; else tmp = ADSCON_CH0 + ADS1118_TS;// temperature sensor mode.DR=8sps, PULLUP on DOUT }

// Reset CS low P2OUT &= ~BIT0;

// Write Config result = WriteSPI(tmp,1);

// Set CS high to end transaction P2OUT |= BIT0;

return result;}

shen:

回复 Wayne Xu:

画好原理图了,但是发现不好买元器件e络盟都没有,中发问了好多家也没有

Wayne Xu:

回复 shen:

可以联系TI的授权代理商,如安富利,新晔等。

shen:

回复 Wayne Xu:

有完整的示例程序吗?我现在写入寄存器能读出来,但是温度数值读出来不对。

Wayne Xu:

回复 shen:

是片上的sensor不对,而是转化电压不对?

赞(0)
未经允许不得转载:TI中文支持网 » 有ADS1118评估板用热电偶测温度的C示例程序吗?
分享到: 更多 (0)