📄 application.c
字号:
#include "fx2.h"
#include "fx2regs.h"
#include "application.h"
#include "syncdly.h"
#include "isr.h"
#define GPIFTRIGRD 4
/*******************************************************************
函数功能:DA传送数据,10位精度。
入口参数:dac_data8位数据。
出口参数:无
说明:
*******************************************************/
void DAC_5618(unsigned char dac_dataH,unsigned char dac_dataL,unsigned char dac_channel)
{
unsigned char TempL,TempH;
if(dac_channel==0x01) //使用通道A。(即out0)
{
nCS = 1;
TempH=0xc0; //模式调整
TempL=0x00;
TempH|=(dac_dataH<<2)|(dac_dataL>>6);
TempL|=(dac_dataL<<2);
nCS = 0;
SPI_Transmit(TempH);
SPI_Transmit(TempL);
nCS = 1;
}
else if (dac_channel==0x02) //使用通道B。(即out1)
{
nCS = 1;
TempH=0x40;
TempL=0x00;
TempH|=(dac_dataH<<2)|(dac_dataL>>6);
TempL|=(dac_dataL<<2);
nCS = 0;
SPI_Transmit(TempH);
SPI_Transmit(TempL);
nCS = 1;
}
else
{
// asm("NOP");
}
}
//*****************************************************************/
//初始化spi
void SPI_Transmit(unsigned char dac_data)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCK = 1;
if(dac_data&0x80)
DIN=1;
else
DIN=0;
SCK=0;
dac_data<<=1;
}
SCK = 1;//
}
//******************************************************
//******************************************************
void Peripheral_SingleWordRead( WORD xdata *gdata )
{
BYTE g_data = 0x00;
while( !( GPIFTRIG & 0x80 ) )
{
}
g_data = XGPIFSGLDATLX; // trigger GPIF
while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
{
;
}
*gdata = ( ( WORD )XGPIFSGLDATH << 8 ) | ( WORD )XGPIFSGLDATLNOX;
}
//*****************************************************
// write single word to PERIPHERAL, using GPIF
//*****************************************************
void Peripheral_SingleWordWrite( WORD gdata )
{
while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
{
;
}
XGPIFSGLDATH = gdata >> 8;
XGPIFSGLDATLX = gdata; // trigger GPIF
}
//--------------------------------------------------------------
// read(s) from PERIPHERAL, using GPIF and EPxFIFO
//--------------------------------------------------------------
void Peripheral_FIFORead( BYTE FIFO_EpNum )
{
GPIFTRIG = GPIFTRIGRD | FIFO_EpNum; // launch GPIF FIFO READ Transaction to EP6 FIFO
SYNCDELAY;
while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 GPIF Done bit
{
;
}
SYNCDELAY;
// for EPx read(s)
}
//--------------------------------------------------------------
// Set GPIF Transaction Count
//--------------------------------------------------------------
void Peripheral_SetGPIFTC( WORD xfrcnt)
{
GPIFTCB1 = xfrcnt >> 8; // setup transaction count
SYNCDELAY;
GPIFTCB0 = ( BYTE )xfrcnt;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -