Read analog value from MCP3201 and send it to serial channel. A vector with 255 pos.

Dependencies:   mbed

Committer:
skelter
Date:
Fri May 06 18:52:40 2016 +0000
Revision:
0:4d02779757de
Commit start

Who changed what in which revision?

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