• 大小: 17KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: SPI  TLE7242  驱动  

资源简介

用CPU的16位SPI驱动恒电流控制芯片TLE7242的源码。

资源截图

代码片段和文件信息

#include “board.h“
#include “stdio.h“

/*****************************************************************************
 * Private types/enumerations/variables
 ****************************************************************************/

//#define LPC_SSP           LPC_SSP1
//#define SSP_IRQ           SSP1_IRQn
//#define LPC_GPDMA_SSP_TX  GPDMA_CONN_SSP1_Tx
//#define LPC_GPDMA_SSP_RX  GPDMA_CONN_SSP1_Rx

#define LPC_SSP           LPC_SSP0
#define SSP_IRQ           SSP0_IRQn
#define LPC_GPDMA_SSP_TX  GPDMA_CONN_SSP0_Tx
#define LPC_GPDMA_SSP_RX  GPDMA_CONN_SSP0_Rx

#define BUFFER_SIZE                         (0x100)
#define SSP_DATA_BITS                       (SSP_BITS_16)
#define SSP_DATA_BIT_NUM(databits)          (databits+1)
#define SSP_DATA_BYTES(databits)            (((databits) > SSP_BITS_8) ? 2:1)
#define SSP_LO_BYTE_MSK(databits)           ((SSP_DATA_BYTES(databits) > 1) ? 0xFF:(0xFF>>(8-SSP_DATA_BIT_NUM(databits))))
#define SSP_HI_BYTE_MSK(databits)           ((SSP_DATA_BYTES(databits) > 1) ? (0xFF>>(16-SSP_DATA_BIT_NUM(databits))):0)

#define SSP_MODE_SEL                        (0x31)
#define SSP_TRANSFER_MODE_SEL               (0x32)
#define SSP_MASTER_MODE_SEL                 (0x31)
#define SSP_SLAVE_MODE_SEL                  (0x32)
#define SSP_POLLING_SEL                     (0x31)
#define SSP_INTERRUPT_SEL                   (0x32)
#define SSP_DMA_SEL                         (0x33)


#define MSG_MSB(n)       ((n&0xffff0000) >> 16)
#define MSG_LSB(n)       (n&0x0000ffff)
#define MSG_WRITE        (0x80000000)
#define MSG_READ         (0x00000000)
#define MSG_CH0          (0<<24)
#define MSG_CH1          (1<<24)
#define MSG_CH2          (2<<24)
#define MSG_CH3          (3<<24)

#define ONOFF_ON          (1<<22)
#define ONOFF_OFF         (0<<22)

#define FCLK_7242        (27000000)    //Hz
#define PWMDivider(Hz)   ((FCLK_7242/32/Hz) & 0x3fff)   //N
#define PWMSetpoint(mA)  ((mA*2048*2/3200) & 0x07ff)  //Setpoint
#define PWMKP(n)         ((n&0x0fff)<<12)   //kp
#define PWMKI(n)         ((n&0x0fff)<<0)    //ki
#define Threshold(mA)    (PWMSetpoint(mA)<<12)   //

#define MSG0_VerManu          (0x00000000)
#define MSG1_MPeriod          (0x04000000)   //50~4K Hz
#define MSG2_PWMOffset        (0x08000000)
#define MSG3_Current          (0x0C000000)   //
#define MSG4_DitherPeriod     (0x10000000)   //
#define MSG5_ControlVar       (0x14000000)   //
#define MSG6_ThresholdValue   (0x18000000)   //
#define MSG7_OnOffControl     (0x1C000000)   //
#define MSG8_DiagnosticConf   (0x20000000)   //
#define MSG9_DiagnosticRead   (0x24000000)   //
#define MSG10_CurrentRead     (0x28000000)   //
#define MSG11_AutozeroRead    (0x2C000000)   //
#define MSG12_DutyCycleRead   (0x30000000)   //

/* Tx buffer */
static uint8_t Tx_Buf[BUFFER_SIZE];

/* Rx buffer */
static uint8_t Rx_Buf[BUFFER_SIZE];

static SSP_ConfigFormat ssp_format;
static Chip_SSP_DATA_SETUP_T xf_setup;
static volatile u

评论

共有 条评论