This is a class which contains function to interface with the MLX75320

Dependents:   MLX75320_API

Files at this revision

API Documentation at this revision

Comitter:
TNU
Date:
Tue May 17 18:54:04 2016 +0000
Parent:
12:d1767e2bd3a8
Commit message:
Added documentation

Changed in this revision

LidarSpi.cpp Show annotated file Show diff for this revision Revisions of this file
LidarSpi.h Show annotated file Show diff for this revision Revisions of this file
diff -r d1767e2bd3a8 -r ccf4ab73c33d LidarSpi.cpp
--- a/LidarSpi.cpp	Fri Apr 29 13:39:19 2016 +0000
+++ b/LidarSpi.cpp	Tue May 17 18:54:04 2016 +0000
@@ -8,7 +8,7 @@
 #include <inttypes.h>
 #define SPIFREQ 8000
 
-
+//Set DEBUG to 1 to enable debug printf over Serial interface
 #ifndef DEBUG
 #define DEBUG 0
 #define debug_print(pntPc, ...) \
@@ -348,7 +348,7 @@
 
     return 0;
 }
-int LidarSpi::GetEchoes(Echo *ech, uint16_t maxN, uint16_t mode)
+int LidarSpi::GetEchoes(Echo *ech, uint16_t maxN)
 {
     trigger.write(0);
     int res, a, b;
@@ -489,7 +489,7 @@
 }
 
 
-int LidarSpi::GetEchoes(Echo *ech, uint16_t maxN, uint16_t mode, Serial* pc)
+int LidarSpi::GetEchoes(Echo *ech, uint16_t maxN, Serial* pc)
 {
     trigger.write(0);
     int res, a, b;
@@ -700,7 +700,7 @@
 
 
 
-int LidarSpi::GetTrace  ( uint16_t *buf, uint16_t maxN, uint16_t nSam, uint16_t idx, Serial* pc){
+int LidarSpi::GetTrace  ( uint16_t *buf, uint16_t maxN,Serial* pc){
     trigger.write(0);
     int res, a, b;
     uint32_t cnt;
diff -r d1767e2bd3a8 -r ccf4ab73c33d LidarSpi.h
--- a/LidarSpi.h	Fri Apr 29 13:39:19 2016 +0000
+++ b/LidarSpi.h	Tue May 17 18:54:04 2016 +0000
@@ -5,7 +5,10 @@
 #include "typeDef.h"
 #include "FunctionPointer.h"
 
-
+/**  LidarSpi class
+ *   This class defines methods and structs to interface with the MLX75320 lidar sensing product
+ *
+ */
 
 class LidarSpi
 {
@@ -36,6 +39,8 @@
         // Used on header ADDR field to request all channels and as idx argument of GetTrace function
         static const uint16_t ADDR_ALLCH= 0x1F;
         
+        
+        // Structure for the processed data returned by the sensor
         struct Echo
         {
             uint32_t mDistance;
@@ -121,6 +126,7 @@
             REG_MAX    =   0xFFFF   // Number of registers
         } eASICREG;
     
+        //Internal type used by low level functions: SPI packet type
         enum PackType
         {
             PACK_RREG = 0,      ///< Read register request
@@ -133,7 +139,7 @@
             PACK_RDATA_RESP_L,  ///< Read data response long
             PACK_WDATA_L,       ///< Write data long
         };
-    
+        //Internal type used by low level functions: SPI status status type
         enum StatusType
         {
             STAT_OK = 0,
@@ -143,7 +149,7 @@
             STAT_SEQ_NB,
             STAT_TIMEOUT,
         };
-    
+        //Internal type used by low level functions: SPI firmware packet type
         enum FirmType
         {
             FW_OTP = 0,
@@ -155,32 +161,133 @@
         };
     
     
+    
+/*=====================================================================================================================================    
+//=====================================================================================================================================   
+  _____       _     _ _         __                  _   _                 
+ |  __ \     | |   | (_)       / _|                | | (_)                
+ | |__) |   _| |__ | |_  ___  | |_ _   _ _ __   ___| |_ _  ___  _ __  ___ 
+ |  ___/ | | | '_ \| | |/ __| |  _| | | | '_ \ / __| __| |/ _ \| '_ \/ __|
+ | |   | |_| | |_) | | | (__  | | | |_| | | | | (__| |_| | (_) | | | \__ \
+ |_|    \__,_|_.__/|_|_|\___| |_|  \__,_|_| |_|\___|\__|_|\___/|_| |_|___/
+                                                                      
+//=====================================================================================================================================   
+//====================================================================================================================================*/       
+    
+    
+        /** Constructor
+        * @param: pin names for mosi, miso, clk, chipselect, dataready, reset, trigger and sample*/        
         LidarSpi(PinName mosi, PinName miso, PinName clk, PinName chipSelect, PinName dr, PinName rs, PinName tr, PinName smpl);
+        
+        /** SpiSetting
+        * Change frequency and SPI mode(clock phase and polarity)
+        * @param: frequency in Hz, mode ranging from 0 to 3, pointer to Serial interface for debugging
+        * @return: 0 on success        */
         int SpiSetting(long freq, int mode, Serial* pc);
+        
+        /** ReadReg
+        * Read register at address
+        * @param: register address, pointer to variable to register valueresult
+        * @return: 0 on success        */
+        int ReadReg   ( uint32_t reg, uint32_t *val);
+        
+        /** WriteReg
+        * Write register to address
+        * @param: register address, value to write
+        * @return: 0 on success        */
+        int WriteReg  ( uint32_t reg, uint32_t val);
+        
+                
+        /** GetEchoes
+        * Perform measurement and read processed data
+        * @param: pointer to Echo structure array to store measurement, structure array size (must be >=64)
+        * @return: 0 on success        */
+        int GetEchoes ( Echo *ech, uint16_t maxN);
+        
+        /** GetEchoes
+        * Perform measurement and read processed data
+        * @param: pointer to Echo structure array to store measurement, structure array size (must be >=64), pointer to serial interface for debugging
+        * @return: 0 on success        */
+        int GetEchoes ( Echo *ech, uint16_t maxN, Serial* pc);
+        
+        /** GetTrace
+        * Perform measurement and read raw trace buffer
+        * @param: pointer to int array to store trace buffer, structure array size (must be >=9472*2), pointer to serial interface for debugging
+        * @return: 0 on success        */
+        int GetTrace  ( uint16_t *buf, uint16_t maxN, Serial* pc);
+        
+        /** LoadPatch
+        * Load patch stored on mbed Flash memory in MLX75320 and enable patch
+        * @param: path of patch.hex location, , pointer to serial interface for debugging
+        * @return: 0 on success       */
+        int LoadPatch (const char *patch, Serial *pc);
+        
+        /** SetTrace
+        * Set a variety of registers according to the preset values for a raw data measurement
+        * @return: 0 on success       */
+        int setTrace(void);
+        
+        /** SetTrace
+        * Set a variety of registers according to the preset values for a processed data measurement
+        * @return: 0 on success       */
+        int setEcho(void);
+        
+        /** SetLed
+        * Set a variety of registers according to the preset values to either fire or don't fire the LEDs during a measurement
+        * @param: True to enable LEDs, False to disable       */
+        int setLed(bool state);
+        
+        
+/*=====================================================================================================================================    
+//=====================================================================================================================================   
+  _____       _                        _                    _      _                       _                __                  _   _                 
+ |_   _|     | |                      | |                  | |    | |                     (_)              / _|                | | (_)                
+   | |  _ __ | |_ ___ _ __ _ __   __ _| |   ___  _ __    __| | ___| |__  _   _  __ _  __ _ _ _ __   __ _  | |_ _   _ _ __   ___| |_ _  ___  _ __  ___ 
+   | | | '_ \| __/ _ \ '__| '_ \ / _` | |  / _ \| '__|  / _` |/ _ \ '_ \| | | |/ _` |/ _` | | '_ \ / _` | |  _| | | | '_ \ / __| __| |/ _ \| '_ \/ __|
+  _| |_| | | | ||  __/ |  | | | | (_| | | | (_) | |    | (_| |  __/ |_) | |_| | (_| | (_| | | | | | (_| | | | | |_| | | | | (__| |_| | (_) | | | \__ \
+ |_____|_| |_|\__\___|_|  |_| |_|\__,_|_|  \___/|_|     \__,_|\___|_.__/ \__,_|\__, |\__, |_|_| |_|\__, | |_|  \__,_|_| |_|\___|\__|_|\___/|_| |_|___/
+                                                                                __/ | __/ |         __/ |                                             
+                                                                               |___/ |___/         |___/                                             
+//=====================================================================================================================================   
+//====================================================================================================================================*/    
+        
+        
+        
+        /** ReadReg (overloaded)
+        * Read register at address
+        * @param: register address, pointer to variable to register valueresult, pointer to serial interface for debugging
+        * @return: 0 on success        */
+        int ReadReg(uint32_t reg, uint32_t *val, Serial* pc);
+        
+        /** WriteReg
+        * Write register to address
+        * @param: register address, value to write, pointer to serial interface for debugging
+        * @return: 0 on success        */
+        int WriteReg  ( uint32_t reg, uint32_t val, Serial* pc);
+        
+        /** GetTraceOne
+        * Perform measurement and read raw trace buffer, this method only reads back a single SPI packet
+        * @param: pointer to int array to store trace buffer, structure array size (must be >=9472*2), pointer to serial interface for debugging
+        * @return: 0 on success        */
+        int GetTraceOne  ( uint16_t *buf, uint16_t maxN, uint16_t nSam, uint16_t idx,int index , Serial* pc);
+        
+        /** Trigger
+        * Change pin to high or low to use as trigger point for oscilloscope
+        * @param: 1 or 0 to set voltage level   */
+        void Trigger(int level);
+        
+        
+        int PrintAllReg (uint16_t * regs, uint32_t * val, uint16_t size);
+        
         int TxPacket(uint8_t* rData, uint16_t *rSz, uint8_t *tData, uint16_t tSz);   
         int TxPacketWord(uint8_t* rData, uint16_t *rSz, uint8_t *tData, uint16_t tSz);   
         int TxPacket(uint8_t* rData, uint16_t *rSz, uint8_t *tData, uint16_t tSz, Serial* pc);   
         int TxPacketSlow(uint8_t* rData, uint16_t *rSz, uint8_t *tData, uint16_t tSz, uint16_t usDelay);
         int BasicRead();
         int BasicTransfer(uint8_t* rData, uint16_t rSz, uint8_t *wData, uint16_t wSz, const event_callback_t callback);
-        
-        int ReadReg   ( uint32_t reg, uint32_t *val);
-        int ReadReg(uint32_t reg, uint32_t *val, Serial* pc);
-        int WriteReg  ( uint32_t reg, uint32_t val);
         int WriteRegSpeed  ( uint32_t reg, uint32_t val, uint16_t usDelay);
-        int WriteReg  ( uint32_t reg, uint32_t val, Serial* pc);
         int WriteRegSpeed  ( uint32_t reg, uint32_t val, uint16_t usDelay, Serial* pc);
-        //int GetRegNfo ( uint16_t reg, const RegInfo **nfo);
-        int GetEchoes ( Echo *ech, uint16_t maxN, uint16_t mode);
-        int GetEchoes ( Echo *ech, uint16_t maxN, uint16_t mode, Serial* pc);
-        int GetTrace  ( uint16_t *buf, uint16_t maxN, uint16_t nSam, uint16_t idx, Serial* pc);
-        int GetTraceOne  ( uint16_t *buf, uint16_t maxN, uint16_t nSam, uint16_t idx,int index , Serial* pc);
-        int LoadPatch (const char *patch, Serial *pc);
-        int setTrace(void);
-        int setEcho(void);
-        int PrintAllReg (uint16_t * regs, uint32_t * val, uint16_t size);
-        int setLed(bool state);
-        void Trigger(int level);
+        
         //int SetConfig ( int configNum);
         //int SetAcqCfg ( uint16_t set, uint16_t led, uint16_t accLog, uint16_t ovrLog);
         //int Acquire   ( uchar ab, uchar evGain, uchar evCh, uchar odGain, uchar odCh);