DAC8554芯片的数据传输接口为SPI,每一帧为24位;但是28335的SPI接口最高可配置为16位。
使用28335控制DAC8554方法有三种:
1.才用IO口模拟SPI接口通信;
2.灵活使用28335的SPI接口通信;
3.使用28335的McBSP接口按照DAC8554的时序自定义通信格式。
此处以第二种方法为例:
dsp28335与DAC8554的接线为:
DAC8554的写时序为:
/SYNC必须在D_IN发送24位后DAC才认为接收到的数据为有效数据,否则,将接收到的数据舍弃。
本实验所使用的具体方法是开启28335SPI的FIFO功能,将24位数据帧分成两个12位的数据,依次存入SPITXBUF,这样就可以spi成功发送24的帧
另外还需配置IO口:
- GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0; // Enable pull-up on GPIO54 (SPISIMOA)
- GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0; // Enable pull-up on GPIO55 (SPISOMIA)
- GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; // Enable pull-up on GPIO56 (SPICLKA)
- GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // Enable pull-up on GPIO57 (SPISTEA)
- GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // Asynch input GPIO54 (SPISIMOA)
- GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // Asynch input GPIO55 (SPISOMIA)
- GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // Asynch input GPIO56 (SPICLKA)
- GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // Asynch input GPIO57 (SPISTEA)
- GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1; // Configure GPIO54 as SPISIMOA
- GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1; // Configure GPIO55 as SPISOMIA
- GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1; // Configure GPIO56 as SPICLKA
- GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 1; // Configure GPIO57 as SPISTEA
想更改传输速率的自己修改SPI的时序