資源簡介
AD5328驅動SPWM輸出
代碼片段和文件信息
/*
?*?AD5328.c
?*
?*??Created?on:?2017年7月3日
?*??????Author:?JH
?*/
#define??AD5328XX
#include?“AD5328.h“
#include?
#include?“arm_common_tables.h“
extern?void?Write_Byte(uint16_t?Data);
//頻率可設定??45-60HZ
//中斷里去更新?通過鎖存同步更新
/*
?*?函數功能:DA芯片初始化
?*?函數名:AD5328_Init
?*?返回:NULL
?*?參數1:NULL?????????????????????????????????????
?*/
void?AD5328_Init(void)
{
LOCK_DAC_SET;
SPI3_Write_Cmd(RST);
HAL_Delay(1);
SPI3_Write_Cmd(Buff_SET);?? //無增益??有緩存
SPI3_Write_Cmd(POWER_DOWN);
SPI3_Write_Cmd(LOCK_MODE_Updata); //單次更新模式
}
/*
?*?函數功能:SPI寫命令
?*?函數名:SPI3_Write_Cmd
?*?返回:NULL
?*?參數1:Cmd:命令值
?*/
void?SPI3_Write_Cmd(uint16_t?Cmd)
{
SYNC_DAC_CLR;
#ifdef?ASPI_Mod
Write_Byte(Cmd);
#else
SPI_Buff[0]?=?(uint8_t)(Cmd>>8); //第0位為命令?置1
SPI_Buff[1]?=?(uint8_t)(Cmd);
HAL_SPI_Transmit(&hspi3SPI_Buff2?1000);
#endif
SYNC_DAC_SET; ?//同步到輸入寄存器
}
/*
?*?函數功能:SPI寫數據
?*?函數名:SPI3_Write_Data
?*?返回:NULL
?*?參數1:Channel:通道選擇
?*?參數1:Tdata:要寫入的數據
?*/
void?SPI3_Write_Data(uint8_t?Channeluint16_t?Tdata)
{
SYNC_DAC_CLR;
sdata?=?(Channel<<12)?|?(Tdata&0x0FFF);
sdata?=?sdata?&?0x7FFF; //第0位為數據??置0
#ifdef?ASPI_Mod
Write_Byte(sdata);
#else
SPI_Buff[0]?=?(uint8_t)(sdata>>8);??
SPI_Buff[1]?=?(uint8_t)(sdata);
HAL_SPI_Transmit(&hspi3SPI_Buff21000);
#endif
SYNC_DAC_SET; ?//同步到輸入寄存器
}
/*
?*?函數功能:SPWM輸出DA值
?*?函數名:SPWM_Out_DAValue
?*?返回:NULL
?*?參數1:Channel:通道選擇0-7
?*?參數2:Phase:SPWM的相位0-360
?*?參數3:Dim_Vlaue:調整系數
?*?參數4:SW:SPWM輸出開關
?*/
void?SPWM_Out_DAValue(uint8_t?Channelfloat?Phaseint32_t?Dim_Vlaueuint8_t?typeFlagStatus?SW)
{
//使用DSP庫sin函數
if(SW?==?SW_ON)
{
Phase_x?=?(Phase+Spwm_Output_Cnt*360.0f/Sample_SIZE)*2.0f*PI/360.0f;
Table_Value?=?arm_sin_f32(Phase_x)*0.04096f*Dim_Vlaue;
DA_Value?=?Table_Value+?REF_AD_Value;
}
else
{
DA_Value?=?REF_AD_Value;
}
/*???????使能自己的表
if(SW?==?SW_ON)
{
Table_Value?=?Sample_SIZE*Phase/360+Spwm_Output_Cnt;
if(Table_Value>=Sample_SIZE)
{
Table_Value?=?Table_Value%Sample_SIZE; //防止數組溢出
}
if(Table_Value?==?0) //零點時更新調整值
{
?DIM_UI[type]?=?PID_DIM_UI[type];
}
DA_Value?=?SPWM_Table[Table_Value]*0.001f*DIM_UI[type]?+?REF_AD_Value;
}
else
{
DA_Value?=?REF_AD_Value;
}
*/
SPI3_Write_Data(ChannelDA_Value);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2547??2020-09-02?10:24??AD5328.c
-----------?---------??----------?-----??----
?????????????????2547????????????????????1
- 上一篇:PCA9539驅動程序
- 下一篇:STM32429的串口收發程序
評論
共有 條評論