A collection of Analog Devices drivers for the mbed platform
For additional information check out the mbed page of the Analog Devices wiki: https://wiki.analog.com/resources/tools-software/mbed-drivers-all
Revision 28:e24b911ddd7c, committed 2016-08-18
- Comitter:
- Adrian Suciu
- Date:
- Thu Aug 18 15:14:12 2016 +0300
- Parent:
- 27:3c32495708f4
- Child:
- 29:c693bdaac786
- Commit message:
- Implemented basic daisychain support
Changed in this revision
| libraries/AD5270/AD5270.cpp | Show annotated file Show diff for this revision Revisions of this file |
| libraries/AD5270/AD5270.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/libraries/AD5270/AD5270.cpp Tue May 24 18:24:35 2016 +0200
+++ b/libraries/AD5270/AD5270.cpp Thu Aug 18 15:14:12 2016 +0300
@@ -125,11 +125,11 @@
* @param data - (optional)value for the requested command
* @return response form the AD5270
*/
-uint16_t AD5270::write_cmd(uint8_t command, uint16_t data)
+uint16_t AD5270::write_cmd(uint8_t command, uint16_t data, bool toggle_cs)
{
/* build 16 bit data to be written - Command + Value */
uint16_t ui16Command = ((command & 0x3C) << 8) | (data & 0x3FF);
- return write_reg(ui16Command);
+ return write_reg(ui16Command, toggle_cs);
}
/**
@@ -164,16 +164,16 @@
* @param data to be written
* @return data returned by the AD5270
*/
-uint16_t AD5270::write_reg(uint16_t data)
+uint16_t AD5270::write_reg(uint16_t data, bool toggle_cs)
{
uint16_t result;
uint8_t upper_byte = (data >> 8) & 0xFF;
uint8_t lower_byte = data & 0xFF;
ad5270.format(8, _SPI_MODE);
- cs = false;
+ cs = false & toggle_cs;
result = ((ad5270.write(upper_byte)) << 8);
result |= ad5270.write(lower_byte);
- cs = true;
+ cs = true & toggle_cs;
return result;
}
@@ -279,5 +279,11 @@
write_cmd(SW_SHUTDOWN, static_cast<uint8_t>(mode));
}
+void AD5270::daisy_chain(uint8_t *buffer, uint8_t size)
+{
+ cs = 0;
+ for(int i = 0; i < size; i++)
+ buffer[i] = ad5270.write(buffer[i]);
+ cs = 1;
+}
-
--- a/libraries/AD5270/AD5270.h Tue May 24 18:24:35 2016 +0200
+++ b/libraries/AD5270/AD5270.h Thu Aug 18 15:14:12 2016 +0300
@@ -104,8 +104,8 @@
/* Low level methods */
- uint16_t write_cmd(uint8_t command, uint16_t data = 0x00);
- uint16_t write_reg(uint16_t data);
+ uint16_t write_cmd(uint8_t command, uint16_t data = 0x00, bool toggle_cs = true);
+ uint16_t write_reg(uint16_t data, bool toggle_cs = true);
/* Methods that deal with resistance in float format*/
uint16_t calc_RDAC(float resistance);
@@ -120,6 +120,8 @@
uint8_t read_50TP_last_address(void);
uint16_t read_50TP_memory(uint8_t address);
+ void daisy_chain(uint8_t *buffer, uint8_t size);
+
SPI ad5270; ///< SPI instance of the AD5270
DigitalOut cs; ///< DigitalOut instance for the chip select of the AD5270
CN0357 - Toxic gas measurement
CN0216 - Weight Scale