Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:9a5218876095, committed 2020-06-22
- Comitter:
- vitlog
- Date:
- Mon Jun 22 09:52:01 2020 +0000
- Commit message:
- Tozhe ne pomnyu
Changed in this revision
| ad5422_arduino.cpp | Show annotated file Show diff for this revision Revisions of this file |
| ad5422_arduino.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ad5422_arduino.cpp Mon Jun 22 09:52:01 2020 +0000
@@ -0,0 +1,145 @@
+#include "ad5422_arduino.h"
+#include "PGA280.h"
+#include <math.h>
+#include "PerifConfig.h"
+#include <stdbool.h>
+
+
+void ad5422_resetDevice ( unsigned char adr )
+{
+ pga280_setAdress ( adr );
+ ADS1259_RESET = 0;
+
+ wait_ms ( 1 ); // ??? 1 Mhz 70
+
+ ADS1259_RESET = 1;
+ pga280_resetAdress ();
+}
+
+void ad5422_powerDownDevice ( unsigned char adr )
+{
+ pga280_setAdress ( adr );
+
+ ADS1259_RESET = 0;
+
+ pga280_resetAdress ();
+}
+
+void ad5422_powerUpDevice ( unsigned char adr )
+{
+ pga280_setAdress ( adr );
+
+ ADS1259_RESET = 1;
+
+ pga280_resetAdress ();
+}
+
+char ad5422_readyDevice ( unsigned char ch )
+{
+ char tmp;
+
+ pga280_setAdress ( ch );
+
+ if ( CRDYA == 0 )
+ tmp = true;
+ else
+ tmp = false;
+
+ pga280_resetAdress ();
+
+ return tmp;
+}
+
+char ad5422_sendCommandDevice ( unsigned char reg, unsigned char high_byte, unsigned char low_byte, unsigned char adr )
+{
+ pga280_setAdress ( adr );
+
+ CS = 0;
+ SPI1MasterTransferByte ( reg );
+ SPI1MasterTransferByte( high_byte );
+ SPI1MasterTransferByte( low_byte );
+ CS = 1;
+
+ pga280_resetAdress ();
+
+ return true;
+}
+
+uint32_t ad5422_readReg ( unsigned char reg, unsigned char adr )
+{
+ union {
+ struct {
+ uint8_t
+ b0,
+ b1,
+ b2;
+ };
+ uint32_t data;
+ }read;
+
+ pga280_setAdress ( adr );
+ CS = 0;
+
+ SPI1MasterTransferByte( AD5422_READBACK );
+ SPI1MasterTransferByte( 0x00 );
+ SPI1MasterTransferByte( reg );
+
+ read.b0 = SPI1MasterReadByte();
+ read.b1 = SPI1MasterReadByte();
+ read.b2 = SPI1MasterReadByte();
+
+ CS = 1;
+ pga280_resetAdress ();
+
+ return read.data;
+}
+
+unsigned int ad5422_setRegisters ( void )
+{
+ ad5422_sendCommandDevice ( AD5422_REG_RESET, 0x00, 0x01, AD5422_ADR );
+ ad5422_sendCommandDevice ( AD5422_REG_CONTROL, 0x30, 0b00000001, AD5422_ADR );
+ return 1;
+}
+
+unsigned int ad5422_setRegistersChannal ( char channal )
+{
+ int i;
+
+ for ( i = 0; i < channal; i++ )
+ ad5422_sendCommandDevice ( AD5422_REG_RESET, 0x00, 0x01, AD5422_ADR );
+
+ wait_ms (1);
+
+ for ( i = 0; i < channal; i++ )
+ ad5422_sendCommandDevice ( AD5422_REG_CONTROL, 0x00, 0x08, AD5422_ADR );
+
+ wait_ms (1);
+
+ for ( i = 0; i < channal; i++ )
+ ad5422_sendCommandDevice ( AD5422_REG_CONTROL, 0x30, 0x09, AD5422_ADR );
+
+ wait_ms (1);
+
+ return 1;
+}
+
+unsigned char ad5422_setVoltageChannal ( float voltage, char channal )
+{
+ unsigned long tmp;
+ float v_ref = 5.2;
+ unsigned char gain = 2;
+ unsigned int value_output;
+ unsigned char value_output_high;
+ unsigned char value_output_low;
+ int i;
+
+ tmp = ( voltage / ( v_ref * gain ) ) * 0xFFFF;
+ value_output = ( v_ref * gain ) - tmp;
+ value_output_high = ( value_output >> 8 ) * 0xFF;
+ value_output_low = value_output * 0xFF;
+
+ for ( i = 0; i < channal; i++ )
+ ad5422_sendCommandDevice ( AD5422_REG_DATA, value_output_high, value_output_low, AD5422_ADR );
+
+ return (0);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ad5422_arduino.h Mon Jun 22 09:52:01 2020 +0000
@@ -0,0 +1,84 @@
+#ifndef _AD5422_ARDUINO_H /* Guard against multiple inclusion */
+#define _AD5422_ARDUINO_H
+#include <stdint.h>
+/* Provide C++ Compatibility */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AD5422_ADR 0
+//////////////////////////////////////////////
+// ************ Commands AD5422 *********** //
+//////////////////////////////////////////////
+
+#define AD5422_NOP 0x00
+#define AD5422_REG_DATA 0x01
+#define AD5422_READBACK 0x02
+#define AD5422_REG_CONTROL 0x55
+#define AD5422_REG_RESET 0x56
+
+//////////////////////////////////////////////
+// *********** READ Registers ****************** //
+//////////////////////////////////////////////
+
+#define AD5422_STATUS_REGISTER 0x00
+#define AD5422_DATA_REGISTER 0x01
+#define AD5422_CONTROL_REGISTER 0x10
+
+ typedef union{
+ struct{
+ uint16_t
+ R0:1,
+ R1:1,
+ R2:1,
+ DCEN:1,
+ SREN:1,
+ SRSTEP:3,
+ SRCLOCK:4,
+ OUTEN:1,
+ REXT:1,
+ OVRRNG:1,
+ CLRSEL:1;
+ };
+ struct{
+ uint16_t
+ L:8,
+ H:8;
+ };
+ }AD5422_CONTROL_t;
+ extern AD5422_CONTROL_t AD5422_CONTROL;
+
+ typedef union{
+ struct{
+ uint16_t
+ OverTemp:1,
+ SlewActive:1,
+ IoutFault:1,
+ :13;
+ };
+ uint16_t w:16;
+
+ }AD5422_STATUS_t;
+ extern AD5422_STATUS_t AD5422_STATUS;
+
+ void ad5422_init ( void );
+ void ad5422_resetDevice ( unsigned char adr );
+ void ad5422_powerDownDevice ( unsigned char adr );
+ void ad5422_powerUpDevice ( unsigned char adr );
+ char ad5422_readyDevice ( unsigned char ch );
+ char ad5422_sendCommandDevice ( unsigned char reg, unsigned char high_byte, unsigned char low_byte, unsigned char adr );
+ uint32_t ad5422_readReg ( unsigned char reg, unsigned char adr );
+ unsigned int ad5422_setRegisters ( void );
+ unsigned int ad5422_setRegistersChannal ( char channal );
+ unsigned char ad5422_setVoltageChannal ( float voltage, char channal );
+
+ /* Provide C++ Compatibility */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EXAMPLE_FILE_NAME_H */
+
+/* *****************************************************************************
+ End of File
+ */