Daniel Delsuc
/
RM3100BB_Sample_Code
Sample program for interfacing with PNI's RM3100 Breakout Board
mbed_objects.cpp@0:6ddf88b49483, 2017-10-26 (annotated)
- Committer:
- ddelsuc
- Date:
- Thu Oct 26 18:40:57 2017 +0000
- Revision:
- 0:6ddf88b49483
Sample program for interfacing with PNI's RM3100 Breakout Board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ddelsuc | 0:6ddf88b49483 | 1 | // The purpose of this file and associated header file is to |
ddelsuc | 0:6ddf88b49483 | 2 | // enable globalization of mbed platform specific objects |
ddelsuc | 0:6ddf88b49483 | 3 | // for all source files to utilize |
ddelsuc | 0:6ddf88b49483 | 4 | |
ddelsuc | 0:6ddf88b49483 | 5 | #include "mbed_objects.h" |
ddelsuc | 0:6ddf88b49483 | 6 | |
ddelsuc | 0:6ddf88b49483 | 7 | //****************************** |
ddelsuc | 0:6ddf88b49483 | 8 | // MBED Library instatiations |
ddelsuc | 0:6ddf88b49483 | 9 | //****************************** |
ddelsuc | 0:6ddf88b49483 | 10 | |
ddelsuc | 0:6ddf88b49483 | 11 | I2C i2c(I2C_SDA, I2C_SCL); |
ddelsuc | 0:6ddf88b49483 | 12 | Serial pc(USBTX, USBRX); |
ddelsuc | 0:6ddf88b49483 | 13 | |
ddelsuc | 0:6ddf88b49483 | 14 | DigitalIn DRDY_PIN(D8); |
ddelsuc | 0:6ddf88b49483 | 15 | |
ddelsuc | 0:6ddf88b49483 | 16 | // MBED native READ/ WRITE functions |
ddelsuc | 0:6ddf88b49483 | 17 | unsigned int rm3100_i2c_write(char registerAddress, char* buffer, short int length) |
ddelsuc | 0:6ddf88b49483 | 18 | { |
ddelsuc | 0:6ddf88b49483 | 19 | char writeBuffer[MAX_I2C_WRITE + 1]; |
ddelsuc | 0:6ddf88b49483 | 20 | writeBuffer[0] = registerAddress; |
ddelsuc | 0:6ddf88b49483 | 21 | memcpy(&writeBuffer[1], buffer, length); |
ddelsuc | 0:6ddf88b49483 | 22 | //i2c.write(RM3100_I2C_ADDRESS_8bit, const char *data, int length, 1); |
ddelsuc | 0:6ddf88b49483 | 23 | // returns 0 on success (ack), non-0 on failure (nack) |
ddelsuc | 0:6ddf88b49483 | 24 | int status = i2c.write(RM3100_I2C_ADDRESS_8bit, writeBuffer, length+1, 0); |
ddelsuc | 0:6ddf88b49483 | 25 | return !status; // return True if successfull. mbed:0=Success |
ddelsuc | 0:6ddf88b49483 | 26 | } |
ddelsuc | 0:6ddf88b49483 | 27 | |
ddelsuc | 0:6ddf88b49483 | 28 | unsigned int rm3100_i2c_read(char registerAddress, char* buffer, short int length) |
ddelsuc | 0:6ddf88b49483 | 29 | { |
ddelsuc | 0:6ddf88b49483 | 30 | char writeBuffer[1] = {registerAddress}; |
ddelsuc | 0:6ddf88b49483 | 31 | i2c.write(RM3100_I2C_ADDRESS_8bit, writeBuffer, 1, 1); |
ddelsuc | 0:6ddf88b49483 | 32 | int status = i2c.read(RM3100_I2C_ADDRESS_8bit, buffer, length, 0); |
ddelsuc | 0:6ddf88b49483 | 33 | if (!status) //mbed:0=Success |
ddelsuc | 0:6ddf88b49483 | 34 | return length; |
ddelsuc | 0:6ddf88b49483 | 35 | else |
ddelsuc | 0:6ddf88b49483 | 36 | return 0; |
ddelsuc | 0:6ddf88b49483 | 37 | } |