Read analog value from MCP3201 serial ADC converter SPI interface.

Dependencies:   mbed

Committer:
skelter
Date:
Fri May 06 18:50:55 2016 +0000
Revision:
0:f9b5c272f6ed
commit start

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skelter 0:f9b5c272f6ed 1 /*
skelter 0:f9b5c272f6ed 2 Header for MCP3201 Analog SAR Converter with SPI interface
skelter 0:f9b5c272f6ed 3 Version: 1.0
skelter 0:f9b5c272f6ed 4 Julio S.
skelter 0:f9b5c272f6ed 5 */
skelter 0:f9b5c272f6ed 6
skelter 0:f9b5c272f6ed 7 // SPI clock freq. in HZ
skelter 0:f9b5c272f6ed 8 // Limits from MCP3201 datasheet are:
skelter 0:f9b5c272f6ed 9 // 1500000Hz when vdd=5V
skelter 0:f9b5c272f6ed 10 // 800000Hz when vdd=2.7V
skelter 0:f9b5c272f6ed 11 // 1MHz should work and is the default value.
skelter 0:f9b5c272f6ed 12 #define MCP3201_CLK_FREQ 1000000
skelter 0:f9b5c272f6ed 13
skelter 0:f9b5c272f6ed 14 // MCP3201 SPI channel pinout
skelter 0:f9b5c272f6ed 15 // p5 not wired, there are no commands to send for MCP3201 device
skelter 0:f9b5c272f6ed 16 SPI MCP3201(p5,p6,p7);
skelter 0:f9b5c272f6ed 17 // take control from CS pin to avoid transition changes between write commands
skelter 0:f9b5c272f6ed 18 DigitalOut cs(p8);
skelter 0:f9b5c272f6ed 19
skelter 0:f9b5c272f6ed 20
skelter 0:f9b5c272f6ed 21 // Read the analog value from MCP3201.
skelter 0:f9b5c272f6ed 22 // return 12bit interger (0...4095)
skelter 0:f9b5c272f6ed 23 int ReadAnalogMCP3201(void)
skelter 0:f9b5c272f6ed 24 {
skelter 0:f9b5c272f6ed 25 //uncommente below line only if the MCP3201_CLK_FREQ is diferrent of 1MHz
skelter 0:f9b5c272f6ed 26 //MCP3201.frequency(MCP3201_CLK_FREQ);
skelter 0:f9b5c272f6ed 27
skelter 0:f9b5c272f6ed 28 cs=0;
skelter 0:f9b5c272f6ed 29 int high_byte = MCP3201.write(0x00);
skelter 0:f9b5c272f6ed 30 int low_byte = MCP3201.write(0x00);
skelter 0:f9b5c272f6ed 31 cs=1;
skelter 0:f9b5c272f6ed 32 int conv_result = ((high_byte & 0x1f) << 7) | ((low_byte >> 1) & 0x7f);
skelter 0:f9b5c272f6ed 33
skelter 0:f9b5c272f6ed 34 return conv_result;
skelter 0:f9b5c272f6ed 35 }