📄 dac.c
字号:
/***********************************************Copyright (c)*********************************************
** Guangzou ZLG-MCU Development Co.,LTD.
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: DAC.c
** Last modified Date: 2007-12-01
** Last Version: 1.0
** Descriptions: I2C函数实现,采用设备描述符来操作
**
**--------------------------------------------------------------------------------------------------------
** Created by: lixiaocheng
** Created date: 2007-12-01
** Version: 1.0
** Descriptions: 无
**
*********************************************************************************************************/
#include "Config.h"
#include "DacPrivate.h"
#include "Dac.h"
/*********************************************************************************************************
定义操作I2C器件的结构体,有多个器件就需要声明多个结构体
*********************************************************************************************************/
static __DAC_INFO __Dac0Data;
/*********************************************************************************************************
下面使用指针数组来保存结构体指针,方便对该驱动的扩展
*********************************************************************************************************/
const __PDAC_INFO __GpdacDateTab[__DAC_MAX_NUM] = {&__Dac0Data};
/*********************************************************************************************************
下面定义了I2C0基地址值,如果有多个I2C器件可以在该位置添加相应的基地址即可
*********************************************************************************************************/
const uint32 __GuiDacBaseAddrTab[__DAC_MAX_NUM] = {DAC_BASE_ADDR};
/*********************************************************************************************************
** Function name: dacInit()
** Descriptions: DAC初始化函数,返回错误表示ID错误
** Input parameters: uiArgID DAC的ID
** Output parameters: NONE
** Returned value: OPERATE_FAIL 操作失败
** OPERATE_SUCCESS 操作成功
*********************************************************************************************************/
int32 dacInit (uint32 uiArgID)
{
if (uiArgID >= __DAC_MAX_NUM) {
return OPERATE_FAIL;
}
__GpdacDateTab[uiArgID]->puiAddrBase = (uint32 *)__GuiDacBaseAddrTab[uiArgID];
__GpdacDateTab[uiArgID]->uiOffBase = 0;
return OPERATE_SUCCESS;
}
/*********************************************************************************************************
** Function name: dacWrite()
** Descriptions: DAC转换电压输出函数,注意写完值要等待3us时间,才能使转换结束,返回错误表示ID错误
** Input parameters: uiArgID DAC的设备号
** uiArgValue 要输出的电压值单位mv
** Output parameters: NONE
** Returned value: OPERATE_FAIL 操作失败
** OPERATE_SUCCESS 操作成功
*********************************************************************************************************/
int32 dacWrite (uint32 uiArgID, uint32 uiArgValue)
{
volatile uint32 *puiAddrBase;
uint32 uiOffBase;
uint32 uiValue = 0;
if (uiArgID >= __DAC_MAX_NUM) {
return OPERATE_FAIL;
}
puiAddrBase = __GpdacDateTab[uiArgID]->puiAddrBase;
uiOffBase = __GpdacDateTab[uiArgID]->uiOffBase;
if (uiArgValue > __DAC_REF ) {
uiArgValue = __DAC_REF;
}
uiArgValue = (uiArgValue * 1024) / __DAC_REF;
uiValue = (__DAC_MAX_OUT_CURRENT << 16) |
(uiArgValue << 6);
puiAddrBase[__B_DAC_CR << uiOffBase] = uiValue;
return OPERATE_SUCCESS;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -