📄 tlc549.c
字号:
/****************************************************************
* 文件名:TLC549.c
* 文件描述:
*
* **************************************************************/
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "TLC549.h"
static alt_u8 out=0xff;
/**************************************************************
* 注意:由于在FPGA和TLC549之间接了一片反相器,所以对芯片引脚的设置都将相
* 反。
* 例如:TLC549_SET_CLK()函数,实际上FPGA输出低电平。
* ***********************************************************/
/*******************************
* 说明:设置TLC549芯片clk脚高电平
******************************/
void TLC549_SET_CLK(void)
{
out = out & 0xFE;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}
/********************************
* 说明:设置TLC549芯片clk脚低电平
*******************************/
void TLC549_CLR_CLK(void)
{
out = out | 0x01;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}
/*********************************
* 说明:设置TLC549芯片ce脚高电平
* ******************************/
void TLC549_SET_CE(void)
{
out = out & 0xFD;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}
/***********************************
* 说明:设置TLC549芯片ce脚低电平
* ********************************/
void TLC549_CLR_CE(void)
{
out = out | 0x02;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}
void TLC549_delay(alt_u16 time)
{
alt_u16 i;
for(i=0; i<time; i++);
}
/**************************************
* 说明: AD读函数,从TLC594读取A/D转换值
*return: 8bit AD转换值
* ***********************************/
alt_u8 TLC549_get_AD(void)
{
alt_u8 i;
alt_u8 rt=0;
TLC549_CLR_CLK();
TLC549_CLR_CE();
TLC549_delay(20);
if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
rt=rt | 0x80;
TLC549_SET_CLK();
TLC549_delay(20);
TLC549_CLR_CLK();
TLC549_delay(20);
for(i=6; i>0; i--)
{
TLC549_SET_CLK();
TLC549_delay(20);
if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
rt = rt | (1<<i);
TLC549_CLR_CLK();
TLC549_delay(20);
}
TLC549_SET_CLK();
TLC549_SET_CE();
return(rt);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -