Read analog value from MCP3201 and send it to serial channel. A vector with 255 pos.
Dependencies: mbed
mcp3201.h@0:4d02779757de, 2016-05-06 (annotated)
- Committer:
- skelter
- Date:
- Fri May 06 18:52:40 2016 +0000
- Revision:
- 0:4d02779757de
Commit start
Who changed what in which revision?
User | Revision | Line number | New 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 | } |