sggt/App/SIG24130/SIG24130.h

184 lines
6.2 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
 * File Name : SIG24130.h
 * Description : Implementation of SIG24130/SIG24131/SIG24132 Driver.
* Author : Bob Zhou(support@signal-micro.com)
********************************************************************************
* Copyright 2023(c) Nanjing Signal Micro.
*
* All rights reserved.
*
* Software License Agreement
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* - Neither the name of Nanjing Signal Micro nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* - The use of this software may or may not infringe the patent rights of one
* or more patent holders. This license does not release you from the requirement
* that you obtain separate licenses from these patent holders to use this software.
*
* - Use of the software either in source or binary form, must be run on or directly
* connected to an Nanjing Signal Micro component.
*
* THIS SOFTWARE IS PROVIDED BY NANJING SIGNAL MICRO "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL NANJING SIGNAL MICRO BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
********************************************************************************
* SVN Revision: 1.0
*******************************************************************************/
#ifndef __SIG24130_H__
#define __SIG24130_H__
#ifdef __cplusplus
extern "C"
{
#endif
#include "stdint.h"
#include "data_type_def.h"
#define SIG24130_CS_GPIO_Port GPIOB
#define SIG24130_CS_Pin GPIO_PIN_12
#define SIG24130_CSn_LOW HAL_GPIO_WritePin(SIG24130_CS_GPIO_Port, SIG24130_CS_Pin, GPIO_PIN_RESET)
#define SIG24130_CSn_HIGH HAL_GPIO_WritePin(SIG24130_CS_GPIO_Port, SIG24130_CS_Pin, GPIO_PIN_SET)
// Register address
#define CMD_WRITE 0x20
#define CMD_READ 0x40
#define CONF0 0x01
#define CONF1 0x02
#define OFFSET 0x03
#define GAIN 0x04
// Speed choices
#define SPEED_2p5 0x00
#define SPEED_5 0x01
#define SPEED_10 0x02
#define SPEED_12p5 0x03
#define SPEED_15 0x04
#define SPEED_20 0x05
#define SPEED_25 0x06
#define SPEED_30 0x07
#define SPEED_40 0x08
#define SPEED_50 0x09
#define SPEED_60 0x0A
#define SPEED_80 0x0B
#define SPEED_100 0x0C
#define SPEED_120 0x0D
#define SPEED_160 0x0E
#define SPEED_200 0x0F
#define SPEED_240 0x10
#define SPEED_250 0x31
#define SPEED_300 0x11
#define SPEED_400 0x12
#define SPEED_480 0x13
#define SPEED_500 0x34
#define SPEED_600 0x14
#define SPEED_800 0x15
#define SPEED_1000 0x36
#define SPEED_1200 0x16
#define SPEED_2000 0x37
#define SPEED_2400 0x17
#define SPEED_4000 0x38
#define SPEED_4800 0x18
#define SPEED_8000 0x39
#define SPEED_9600 0x19
// Gain choices
#define GAIN_1 0x00
#define GAIN_2 0x01
#define GAIN_4 0x02
#define GAIN_8 0x03
#define GAIN_16 0x04
#define GAIN_32 0x05
#define GAIN_64 0x06
#define GAIN_128 0x07
#define GAIN_256 0x08
// Input choices
#define AIN0 0x00
#define AIN1 0x01
#define AIN2 0x02
#define AIN3 0x03
#define AIN4 0x04
#define AIN5 0x05
#define AIN6 0x06
#define AIN7 0x07
#define AINCOM 0x08
#define TPS 0x09
#define AVSS 0x0A
#define AVDD 0x0B
#define AVDD_AVSS 0x0C
#define DVDD_DVSS 0x0D
// Reference choices
#define EXTREF0 0x00
#define EXTREF1 0x01
#define INTREF_2P5V 0x02
#define INTREF_1P17V 0x03
// IDAC current choices
#define CURRENT_0uA 0x00
#define CURRENT_10uA 0x01
#define CURRENT_50uA 0x02
#define CURRENT_100uA 0x03
#define CURRENT_200uA 0x04
#define CURRENT_250uA 0x05
#define CURRENT_500uA 0x06
#define CURRENT_1000uA 0x07
extern void delay_nus(int nus);
extern void SIG24130_SendByte(uint8_t data);
extern uint8_t SIG24130_ReceiveByte(void);
extern uint8_t SPIDEV1_transfer(uint8_t *send, uint8_t *receive, uint8_t bytes_num);
extern void SIG24130_WriteRegister(uint8_t addr, uint8_t H_DATA, uint8_t M_DATA, uint8_t L_DATA);
extern uint32_t SIG24130_ReadRegister(uint8_t addr);
extern void SIG24130_SetInputMux(uint8_t muxp, uint8_t muxn);
extern void SIG24130_SetSpeed(uint8_t speed);
extern void SIG24130_SetFilter(uint8_t sinc4, uint8_t rej60);
extern void SIG24130_SetGain(uint8_t gain);
extern void SIG24130_SetBuffer(uint8_t buffer);
extern void SIG24130_SetRefMux(uint8_t refmux);
extern void SIG24130_SetSingleShot(uint8_t single);
extern void SIG24130_SetZeroLatency(uint8_t latency);
extern void SIG24130_SetIDAC(uint8_t idac_size, uint8_t idac2_mux, uint8_t idac1_mux, uint8_t idac_pair);
extern void SIG24130_SetBCS(uint8_t burnout);
extern void SIG24130_SetVbias(uint8_t vbias);
extern void SIG24130_SetDelay(uint8_t delay);
extern void SIG24130_SetRefOut(uint8_t refout);
extern void SIG24130_Reset(void);
extern void SIG24130_Sync(void);
extern void SIG24130_Sleep(void);
extern void SIG24130_Wakeup(void);
extern void SIG24130_SYSOCAL(void);
extern void SIG24130_SYSGCAL(void);
extern void SIG24130_SELFOCAL(void);
extern void SIG24130_Init(void);
extern unsigned long SIG24130_RetrievalData(uint8_t rdata, uint8_t chksum);
extern unsigned long SIG16130_RetrievalData(uint8_t rdata, uint8_t chksum);
extern void fun_get_sig16132_ch(uint8_t channel, float32 *data);
#ifdef __cplusplus
}
#endif
#endif