Teste de Tela
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
mcp3201.h@2:ae8636da1252, 2017-12-08 (annotated)
- Committer:
- marcusncunha
- Date:
- Fri Dec 08 19:17:27 2017 +0000
- Revision:
- 2:ae8636da1252
- Parent:
- 0:9b2b74c6af2f
Projeto
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcusncunha | 0:9b2b74c6af2f | 1 | /* |
marcusncunha | 0:9b2b74c6af2f | 2 | Header for MCP3201 Analog SAR Converter with SPI interface |
marcusncunha | 0:9b2b74c6af2f | 3 | Version: 1.0 |
marcusncunha | 0:9b2b74c6af2f | 4 | Julio S. |
marcusncunha | 0:9b2b74c6af2f | 5 | */ |
marcusncunha | 0:9b2b74c6af2f | 6 | |
marcusncunha | 0:9b2b74c6af2f | 7 | // SPI clock freq. in HZ |
marcusncunha | 0:9b2b74c6af2f | 8 | // Limits from MCP3201 datasheet are: |
marcusncunha | 0:9b2b74c6af2f | 9 | // 1500000Hz when vdd=5V |
marcusncunha | 0:9b2b74c6af2f | 10 | // 800000Hz when vdd=2.7V |
marcusncunha | 0:9b2b74c6af2f | 11 | // 1MHz should work and is the default value. |
marcusncunha | 0:9b2b74c6af2f | 12 | #define MCP3201_CLK_FREQ 1000000 |
marcusncunha | 0:9b2b74c6af2f | 13 | |
marcusncunha | 0:9b2b74c6af2f | 14 | // MCP3201 SPI channel pinout |
marcusncunha | 0:9b2b74c6af2f | 15 | //SPI spi(p5, p6, p7); // mosi, miso, sclk |
marcusncunha | 0:9b2b74c6af2f | 16 | // p5 not wired, there are no commands to send for MCP3201 device |
marcusncunha | 0:9b2b74c6af2f | 17 | SPI MCP3201(SPI_MOSI, SPI_MISO, SPI_SCK); |
marcusncunha | 0:9b2b74c6af2f | 18 | // take control from CS pin to avoid transition changes between write commands |
marcusncunha | 2:ae8636da1252 | 19 | DigitalOut cs(PB_8); |
marcusncunha | 0:9b2b74c6af2f | 20 | // Read the analog value from MCP3201. |
marcusncunha | 0:9b2b74c6af2f | 21 | // return 12bit interger (0...4095) |
marcusncunha | 0:9b2b74c6af2f | 22 | int ReadAnalogMCP3201(void) |
marcusncunha | 0:9b2b74c6af2f | 23 | { |
marcusncunha | 0:9b2b74c6af2f | 24 | //uncommente below line only if the MCP3201_CLK_FREQ is diferrent of 1MHz |
marcusncunha | 0:9b2b74c6af2f | 25 | //MCP3201.frequency(MCP3201_CLK_FREQ); |
marcusncunha | 0:9b2b74c6af2f | 26 | |
marcusncunha | 0:9b2b74c6af2f | 27 | cs=0; |
marcusncunha | 0:9b2b74c6af2f | 28 | int high_byte = MCP3201.write(0x00); |
marcusncunha | 0:9b2b74c6af2f | 29 | int low_byte = MCP3201.write(0x00); |
marcusncunha | 0:9b2b74c6af2f | 30 | cs=1; |
marcusncunha | 0:9b2b74c6af2f | 31 | int conv_result = ((high_byte & 0x1f) << 7) | ((low_byte >> 1) & 0x7f); |
marcusncunha | 0:9b2b74c6af2f | 32 | |
marcusncunha | 0:9b2b74c6af2f | 33 | return conv_result; |
marcusncunha | 0:9b2b74c6af2f | 34 | } |