52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
#include "SPI.h"
|
|
#include "define.h"
|
|
#include "BoardCfg.h"
|
|
#include "DACInterface.h"
|
|
|
|
unsigned char mDACSPIBaudrate;
|
|
void DACInit()
|
|
{
|
|
mDACSPIBaudrate = SPICalculateBRG(PERIPHERAL_FREQ, 20000000);
|
|
}
|
|
|
|
int DACSetValue(int Channel, int Value)
|
|
{
|
|
unsigned short Buf;
|
|
unsigned char LSByte, MSByte;
|
|
|
|
Buf = Value << 2;
|
|
Buf &= (0x0FFF);
|
|
|
|
LSByte = (unsigned char)(Buf & 0xFF);
|
|
Buf >>= 8;
|
|
MSByte = (Buf & 0xFF);
|
|
|
|
switch(Channel)
|
|
{
|
|
case BUREAU_DAC_CHANNEL:
|
|
{
|
|
SPI2CONbits.CKE = 0;
|
|
VU1_DAC_SYNC_PIN = 0;
|
|
SPITransaction(MSByte,mDACSPIBaudrate);
|
|
SPITransaction(LSByte,mDACSPIBaudrate);
|
|
VU1_DAC_SYNC_PIN = 1;
|
|
SPI2CONbits.CKE = 1;
|
|
break;
|
|
}
|
|
case CUISINE_DAC_CHANNEL:
|
|
{
|
|
SPI2CONbits.CKE = 0;
|
|
VU2_DAC_SYNC_PIN = 0;
|
|
SPITransaction(MSByte,mDACSPIBaudrate);
|
|
SPITransaction(LSByte,mDACSPIBaudrate);
|
|
VU2_DAC_SYNC_PIN = 1;
|
|
SPI2CONbits.CKE = 1;
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|