新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2021-4-12
- 在线时间
- 4 小时
|
如何发出连续的24位?
void ad5761r_write(uint8_t reg_addr_cmd,uint16_t reg_data)
{
uint8_t data[3];
data[0] = reg_addr_cmd;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);//μè′y·¢ËíÇø¿Õ
SPI_I2S_SendData(SPI1, data[0]); //·¢ËíμçÑ1Öμ
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) != RESET);
data[1] = (reg_data & 0xFF00) >> 8;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);//μè′y·¢ËíÇø¿Õ
SPI_I2S_SendData(SPI1, data[1]); //·¢ËíμçÑ1Öμ
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) != RESET);
data[2] = (reg_data & 0x00FF) >> 0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);//μè′y·¢ËíÇø¿Õ
SPI_I2S_SendData(SPI1, data[2]); //·¢ËíμçÑ1Öμ
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) != RESET);
}
void AD5541A_control(u16 date1)
{
AD5541A_LDAC=0; //LDAC½óDAC£¬¼Ä′æÆ÷êμê±êäèë¸üDÂ
AD5541A_SYNC=1; //syncà-¸ß
delay_us(1);
AD5541A_SYNC=0; //syncà-μí
delay_us(1);
ad5761r_write(CMD_WR_CTRL_REG,date1);
delay_us(1);
AD5541A_SYNC=1; //syncà-¸ß
}
//·¢ËíμçÑ1
void AD5541A_WRITE(u16 voltage)
{
AD5541A_LDAC=0; //LDAC½óDAC£¬¼Ä′æÆ÷êμê±êäèë¸üDÂ
AD5541A_SYNC=1; //syncà-¸ß
delay_us(1);
AD5541A_SYNC=0; //syncà-μí
delay_us(1);
ad5761r_write(CMD_WR_UPDATE_DAC_REG,voltage);
delay_us(1); //2»¼óò2¿éòÔ°é
AD5541A_SYNC=1; //syncà-¸ß
}
自己用GPIO写的周期太大了
void AD5541Awrite(unsigned char count, unsigned char *data)
{
unsigned char ValueToWrite = 0;
unsigned char i = 0;
unsigned char j = 0;
SCLK_H;
for(i=1;i<(count+1);i++)
{
ValueToWrite = *(data + i - 1);
for(j=0; j<8; j++)
{
if(0x80 == (ValueToWrite & 0x80))
{
MOSI_H; //êä3ö¸ßμçƽ
}
else
{
MOSI_L; //êä3öμíμçƽ
}
delay_us(1);
SCLK_L;
delay_us(1);
ValueToWrite <<= 1; //Rotate data
SCLK_H;
}
}
MOSI_H;
}
|
-
|