Слияние кода завершено, страница обновится автоматически
#include "main.h"
#include "DACx0004_hSPI.h"
void DACx0004_Write(unsigned int* datacode)
{
DAC_nSYNC(0);
for(int i=0;i<DAISY_CHAIN_NUM;i++)
{
HAL_SPI_Transmit(&DAC_hSPI,datacode+i,4,10);
//Use LA to confirm if the send data is correct
}
DAC_nSYNC(1);
}
void DACx0004_Write_Sync(unsigned int cmd)
{
DAC_nSYNC(0);
unsigned int cmd_addr=cmd;
for(int i=0;i<DAISY_CHAIN_NUM;i++)
{
HAL_SPI_Transmit(&DAC_hSPI,&cmd_addr,4,10);
//Use LA to confirm if the send data is correct
}
DAC_nSYNC(1);
}
void DACx0004_Init()
{
DACx0004_Clear(CLEAR_MODE_MID);
if(DAISY_CHAIN_NUM!=1)
{
for(char i=0;i<DAISY_CHAIN_NUM;i++)
{
DAC_nSYNC(0);
for(char j=0;j<i;j++)
{
unsigned int nop_cmd=NO_OPERATION;
HAL_SPI_Transmit(&DAC_hSPI,&nop_cmd,4,10);
}
unsigned int daisy_chain_cmd=DAISY_CHAIN_MODE;
HAL_SPI_Transmit(&DAC_hSPI,&daisy_chain_cmd,4,10);
DAC_nSYNC(1);
}
}
}
void DACx0004_Clear(unsigned int clear_mode)
{
DACx0004_Write_Sync(CLEAR_MODE_REG||clear_mode);
}
void DACx0004_setVoltage(unsigned int* reg_value)
{
//the reg values should be like:
// DAC1_ChA,DAC2_ChA,DAC1_ChB,DAC2_ChB......
unsigned int cmdlist[4*DAISY_CHAIN_NUM]={0};
for(int i=0;i<DAISY_CHAIN_NUM;i++)
{
cmdlist[4*i]=DACx0004_setVoltage_getCMD(CHANNELA,reg_value[4*i]);
cmdlist[4*i+1]=DACx0004_setVoltage_getCMD(CHANNELB,reg_value[4*i+1]);
cmdlist[4*i+2]=DACx0004_setVoltage_getCMD(CHANNELC,reg_value[4*i+2]);
cmdlist[4*i+3]=DACx0004_setVoltage_getCMD(CHANNELD,reg_value[4*i+3]);
}
DACx0004_Write(cmdlist);
//get the cmd list fron reg value voltage list
}
void DACx0004_DAC_Update()
{
DAC_nLDAC(0);
for(char i=0;i<100;i++)
{
nop();
}
DAC_nLDAC(1);
}
unsigned int DACx0004_setVoltage_getCMD(unsigned int chan_num,unsigned int reg_value)
{
switch (chan_num)
{
case CHANNELA:
return WRITE_TO_BUFFER_N||CHANNELA_ADDR||(reg_value<<4);
break;
case CHANNELB:
return WRITE_TO_BUFFER_N||CHANNELB_ADDR||(reg_value<<4);
break;
case CHANNELC:
return WRITE_TO_BUFFER_N||CHANNELC_ADDR||(reg_value<<4);
break;
case CHANNELD:
return WRITE_TO_BUFFER_N||CHANNELD_ADDR||(reg_value<<4);
break;
default:
return WRITE_TO_BUFFER_N||CHANNEL_ALL_ADDR||(reg_value<<4);
break;
}
return 0;
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )