|
|
View previous topic :: View next topic |
Author |
Message |
Thomas Hauff Guest
|
ADC what one to use? |
Posted: Fri Nov 22, 2002 8:34 pm |
|
|
I need an ADC with serial interface and a min 12 bits and 14 would be better.
I’m looking at the Microchip MCP3201, MCP3301 and the TI TLC3541.
I will be using the 16F876 for the MCU.
Has any one used the on board SPI hardware with the above ADC?
I don’t think that the hardware SPI will work for the TI ADC.
Does any one have a simple read only SPI driver that I can look at to see if I can make it work for the TI ADC?
I have looked at the CCS drivers and programs, but I was looking for some thing that some one has used and knows works at least to a point.
Thank to all of you in advance for the help!
___________________________
This message was ported from CCS's old forum
Original Post ID: 9304 |
|
|
Hans Wedemeyer Guest
|
Re: ADC what one to use? |
Posted: Fri Nov 22, 2002 11:13 pm |
|
|
I just looked at the data sheet for the TI TLC3541.
Page 12 says if you ie FS to VDD it is a normal SPI interafce.
The only issues if make sure you initialkize the PIC SPI to match the Ti chip, CCS does not cater for all possible SPI modes.
It a neat ADC and the data sheet implies the SPI can run at 15MHZ! that mean you should be able to ru the PIC at any SPI frequency even if the crystal is 20MHz !
Study the data sheet and look at timing for sample and hold. If your PIC can meet that the rest should be no problem at all.
___________________________
This message was ported from CCS's old forum
Original Post ID: 9307 |
|
|
Charlie U Guest
|
Re: ADC what one to use? |
Posted: Sat Nov 23, 2002 10:39 am |
|
|
:=I need an ADC with serial interface and a min 12 bits and 14 would be better.
:=I’m looking at the Microchip MCP3201, MCP3301 and the TI TLC3541.
:=I will be using the 16F876 for the MCU.
:=Has any one used the on board SPI hardware with the above ADC?
:=I don’t think that the hardware SPI will work for the TI ADC.
:=Does any one have a simple read only SPI driver that I can look at to see if I can make it work for the TI ADC?
:=I have looked at the CCS drivers and programs, but I was looking for some thing that some one has used and knows works at least to a point.
:=
:=Thank to all of you in advance for the help!
I have used the MCP3201 with the 'C74, the 'F874, and the 'F877, and they work quite well. I found that CCS changed the setup_spi() function between 2.xxx and 3.xxx. I've tried to get them to change it back, to make some sense, but they say it's working for most people. With 3.xxx the basic setup parameters SPI_L_TO_H and SPI_H_TO_L set the spi to modes 0,1 and 1,0, neither of which will work with the MCP3201.
What I've done, is create a .h file with new definitions to replace the following:
#define SPI_L_TO_H 0
#define SPI_H_TO_L 0x10
#define SPI_SAMPLE_AT_END 0x8000
#define SPI_XMIT_L_TO_H 0x4000
My file includes:
#define SPI_MODE_0_0 0x4000
#define SPI_MODE_0_1 0x0000
#define SPI_MODE_1_0 0x0010
#define SPI_MODE_1_1 0x4010
Actually, you can just add these to a header file.
Then, my setup looks like this:
setup_spi(SPI_MASTER|SPI_MODE_1_1|SPI_CLK_DIV_4|SPI_SS_DISABLED);
You will also need a good reference for the ADC. There are many, but I've used a couple from Linear Tech like the LT1634 and LT1258. I use the 4.096V references.
I use one pin for the chip select, and then just use spi_read and spi_write to move data into and out of the chip. I'll let you work out the details of your program, but if you get stuck, post another question and I, and many others I'm certain, will respond.
Also if you have enough time in you application, look at filtering the data by some sort of averaging algorithm to smooth the data.
___________________________
This message was ported from CCS's old forum
Original Post ID: 9317 |
|
|
Charlie U Guest
|
Re: ADC what one to use? |
Posted: Sat Nov 23, 2002 11:47 am |
|
|
:=:=I need an ADC with serial interface and a min 12 bits and 14 would be better.
:=:=I’m looking at the Microchip MCP3201, MCP3301 and the TI TLC3541.
:=:=I will be using the 16F876 for the MCU.
:=:=Has any one used the on board SPI hardware with the above ADC?
:=:=I don’t think that the hardware SPI will work for the TI ADC.
:=:=Does any one have a simple read only SPI driver that I can look at to see if I can make it work for the TI ADC?
:=:=I have looked at the CCS drivers and programs, but I was looking for some thing that some one has used and knows works at least to a point.
:=:=
:=:=Thank to all of you in advance for the help!
:=
:=I have used the MCP3201 with the 'C74, the 'F874, and the 'F877, and they work quite well. I found that CCS changed the setup_spi() function between 2.xxx and 3.xxx. I've tried to get them to change it back, to make some sense, but they say it's working for most people. With 3.xxx the basic setup parameters SPI_L_TO_H and SPI_H_TO_L set the spi to modes 0,1 and 1,0, neither of which will work with the MCP3201.
:=
:=What I've done, is create a .h file with new definitions to replace the following:
:=
:=#define SPI_L_TO_H 0
:=#define SPI_H_TO_L 0x10
:=#define SPI_SAMPLE_AT_END 0x8000
:=#define SPI_XMIT_L_TO_H 0x4000
:=
:=My file includes:
:=
:=#define SPI_MODE_0_0 0x4000
:=#define SPI_MODE_0_1 0x0000
:=#define SPI_MODE_1_0 0x0010
:=#define SPI_MODE_1_1 0x4010
:=
:=Actually, you can just add these to a header file.
:=
:=Then, my setup looks like this:
:=
:=setup_spi(SPI_MASTER|SPI_MODE_1_1|SPI_CLK_DIV_4|SPI_SS_DISABLED);
:=
:=You will also need a good reference for the ADC. There are many, but I've used a couple from Linear Tech like the LT1634 and LT1258. I use the 4.096V references.
:=
:=I use one pin for the chip select, and then just use spi_read and spi_write to move data into and out of the chip. I'll let you work out the details of your program, but if you get stuck, post another question and I, and many others I'm certain, will respond.
:=
:=Also if you have enough time in you application, look at filtering the data by some sort of averaging algorithm to smooth the data.
Ooops. I used the 4 channel version of the ADC which is MCP3204.
___________________________
This message was ported from CCS's old forum
Original Post ID: 9320 |
|
|
Neutone
Joined: 08 Sep 2003 Posts: 839 Location: Houston
|
Re: ADC what one to use? |
Posted: Sat Nov 23, 2002 3:13 pm |
|
|
Look at these sites for ADC's they have some very good products.
<a href="http://www.linear.com/" TARGET="_blank">http://www.linear.com/</a>
<a href="http://www.analog.com/" TARGET="_blank">http://www.analog.com/</a>
When you get ready to impliment SPI I have found using a software solution can be better than a hardware solution in terms of code size and speed of execution. (Unless you have to run at a slow SPI speed)
This code is for the ADC2402
/*-------------------------------------------------------------------
Read ADC
-------------------------------------------------------------------*/
OUTPUT_LOW(PIN_A3); //ADC CS low to verify reading is ready
if (!input(PIN_A2)) //ADC SDO low = sample ready
{
ADCreading = 0;
OUTPUT_HIGH(PIN_A1);
OUTPUT_LOW(PIN_A1);
Channel = input(PIN_A2); // read input channel
OUTPUT_HIGH(PIN_A1);
OUTPUT_LOW(PIN_A1);
OUTPUT_HIGH(PIN_A1);
OUTPUT_LOW(PIN_A1);
for (x= 1; x<= 24; x++)
{
OUTPUT_HIGH(PIN_A1);
OUTPUT_LOW(PIN_A1);
shift_left(&ADCreading,4,input(PIN_A2));
}
OUTPUT_HIGH(PIN_A3);
if (Channel) ADCreading1= ADCreading;
else ADCreading0 = ADCreading;
}
OUTPUT_HIGH(PIN_A3); //ADC CS high to begin new reading
___________________________
This message was ported from CCS's old forum
Original Post ID: 9325 |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|