主题中讨论的其他器件: TMS320F2812、
您好!
在秤重项目中、我遇到了一个奇怪的问题。 我已经使用了 ADS1232、TMS320F2812和 SPI 串行接口。
在 DRDY 的每个下降沿之后、读取数据寄存器、但它始终为 FFFFFF、与输入范围无关、
有时为7FFFFF 或3FFFFF
使用秤重应用原理图
我的代码:
使用 SPI 示例:
包括"DSP281x_Device.h" // DSP281x 头文件 include 文件 #include "DSP281x_examples.h"// DSP281x 示例 include 文件 //此文件中找到的函数的原型语句。 //中断 void ISRTimer2 (void); void delay_loop (void); void SPI_xmit (uint16 a); void SPI_fifo_init (void); void SPI_init (void); void error (void); uint16 Temp; uint16 sdata;//发送数据 uint16 RDATA[3];//接收到的数据 void main (void) { uint16 i=0; InitSysCtrl(); InitGpio();//针对此示例跳过 DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); spi_fifo_init ();//初始化 SPI FIFO SPI_init ();//初始化 SPI InitXIntraupt(); //初始化外部中断 IER |= M_INT1 | M_INT6 EINT; //启用 INTM ERTM; //启用 DBGM GpioDataRegs.GPBDAT.bit.GPIOB0=1;//启用 ADS1232 GpioDataRegs.GPFDAT.ALL = 0x0000; temp=0xF0; for (i=0;i<3;i++) RDATA[i]=0; sdata = 0x0000; for (;) { } } void SPI_init() { //0000 0000 0000 01111 SpiaRegs.SPICCR.all =0x0007;// Reset.7 (使能),极性=0,SPILBK =0,上升沿,8位字符位 SpiaRegs.SPICTL.ALL =0x0006;//溢出 int.4=0 phase .3=0,启用 master=1,正常相位, //启用 TALM.1=1,禁用 SPI int.0。 SpiaRegs.SPIBRR = 0x007F; SpiaRegs.SPICCR.all =0x0087;//从复位中撤回 SPI SpiaRegs.SPIPRI.bit.FREE = 1; //设置断点不会干扰 xmission } void SPI_xmit (uint16 a) { SpiaRegs.SPITXBUF=a; } void SPI_Fifo_init () { //初始化 SPI FIFO 寄存器//1110 0000 0100 0000 SpiaRegs.SPIFFTX.All=0xE040;//SPIRST.15、SPIFFENA.14、TXFIFOREST .13可重写、 //TXFFST.12-8、TXFFINT.7、TXFFINT CLR.6、TXFFIENA.5、TXFFIL4-0 SpiaRegs.SPIFFRX.All=0x204f;//RXFFOVF.15、RXFFOVF CLR.14、RXFIFOReset (RENABLE)、RXFFST12-8 //RXFFINT、RXFFINT CLR、RXFFIENA.5、RXFFIL4-0 SpiaRegs.SPIFFCT.ALL=0x0;// FIFO 发送延迟位 }
和 XINT:
中断空 XINT2_ISR (空) { //在此处插入 ISR 代码 uint16 i=0; 温度^= 0xC0; GpioDataRegs.GPFDAT.ALL =温度; //发送数据 sdata=0xF0; for (i=0;i<3;i++) { SPI_xmit (sdata<8); //等待数据被接收 while (SpiaRegs.SPIFFRX.bit.RXFFST!=1){} //检查已发送的数据 RDATA[i]= SpiaRegs.SPIRXBUF; sdata++; }