您好!感谢您对我上一个问题的回答。我在做项目的过程中又遇到如下问题,麻烦您看一下。
我用TMS320F2812 芯片控制AD9957,现在要向AD9957写控制字,使用F2812的SPI外设。我的问题是:
比如向AD9957的控制寄存器1写控制字,程序如下:
/***********************/
/ / CFR1
write(0x00); //指令字节
// 传输第1个字节
write(0x00);
// 传输第2个字节
write(0x40);
// 传输第3个字节
write(0x00);
// 传输第4个字节
write(0x02);
/***********************/
其中,write()是SPI的发送函数,
void write(unsigned int data)
{
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0; //选中AD9957
if (Spi_TxReady() == 1) // 当检测到SPI发送准备信号置1时,开始发送数据
{
SpiaRegs.SPITXBUF = data; //把数据写入SPI发送缓冲区
}
while((SpiaRegs.SPISTS.all & 0x0040) != 0x0040) {}; // 一直等到数据发送完成
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1; //退出时关片选
mDelay(40);//延时
}
CFR1是4个字节,这样编程对吗?我用示波器检查PLL_LOCK和PDCLK,都是错误的。
谢谢!
您好!感谢您对我上一个问题的回答。我在做项目的过程中又遇到如下问题,麻烦您看一下。
我用TMS320F2812 芯片控制AD9957,现在要向AD9957写控制字,使用F2812的SPI外设。我的问题是:
比如向AD9957的控制寄存器1写控制字,程序如下:
/***********************/
/ / CFR1
write(0x00); //指令字节
// 传输第1个字节
write(0x00);
// 传输第2个字节
write(0x40);
// 传输第3个字节
write(0x00);
// 传输第4个字节
write(0x02);
/***********************/
其中,write()是SPI的发送函数,
void write(unsigned int data)
{
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0; //选中AD9957
if (Spi_TxReady() == 1) // 当检测到SPI发送准备信号置1时,开始发送数据
{
SpiaRegs.SPITXBUF = data; //把数据写入SPI发送缓冲区
}
while((SpiaRegs.SPISTS.all & 0x0040) != 0x0040) {}; // 一直等到数据发送完成
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1; //退出时关片选
mDelay(40);//延时
}
CFR1是4个字节,这样编程对吗?我用示波器检查PLL_LOCK和PDCLK,都是错误的。
谢谢!
举报