?? 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 + -