小弟最近用AVR带一块CS5532进行AD转换。并把结果发送到串口
现在串口发送已经好了
就是在5532初始化上出现了问题
小弟把串口显示的函数放进去,结果发现函数运行几行后再重新运行
根本运行不下去
小弟用的SPI和5532通信的,下边是关于SPI的代码
void SPI_Init(void) //SPI初始化
{
DDRB=0x29; //设置PB3,PB5,PB0为输出,其他为输入
PORTB&=0xfe; //设置CS5532片选PB0输出为低电平
SPCR=0x51; //使能SPI,设置时钟速率为fck/16
SPSR = 0x0;
}
void SPI_Transmit(char cData) //SPI传送数据
{ SPDR=cData; //启动数据传输
while(!(SPSR&(1<
}
下边是5532的初始化函数
void CS5532_Init(void)
{
void SPI_Transmit(char cData);
void USART0_Transmit(unsigned char data);
int i;
//for(i=0;i<0x0e;i++)
SPI_Transmit(0xff);
USART0_Transmit(0xdd);//测试数据
USART0_Transmit(0xee);//测试数据
SPI_Transmit(0xff); //CS5532串口初始化
USART0_Transmit(0xdd);
SPI_Transmit(0x03); //写CS5532配置寄存器
SPI_Transmit(0x20);
SPI_Transmit(0x00);
SPI_Transmit(0x00);
SPI_Transmit(0x00); //系统复位
SPI_Transmit(0x03); //写CS5532配置寄存器
SPI_Transmit(0x00);
SPI_Transmit(0x00);
SPI_Transmit(0x00);
SPI_Transmit(0x00); //初始化电压参考模型
SPI_Transmit(0x05); //写通道设置寄存器
SPI_Transmit(0x00);
SPI_Transmit(0x00);
SPI_Transmit(0x00);
SPI_Transmit(0x00); //选择物理通道1,增益1,单极性
}
结果向串口发送完DD和EE后,又跳回去接着发送DD和EE
求救高手
小弟不胜感激