21ic问答首页 - ads8866跟dsp28335通信问题
ads8866跟dsp28335通信问题
sp28335和ads8866(16位ad)使用spi通信,不管如何调整,读取到的值一直是65535,使用的ad使用的三线模式,DIN接DVDD,下面是我的代码:spi_init() { EALLOW; // SPI 线映射 GpioCtrlRegs.GPAMUX2.bit.GPIO16=1; // MOSI GpioCtrlRegs.GPAMUX2.bit.GPIO17=1; // SOMI GpioCtrlRegs.GPAMUX2.bit.GPIO18=1; // SCLK GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; // GPIO19 做普通 GPIO GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; // 输出 GpioDataRegs.GPACLEAR.bit.GPIO19 = 1; GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; SpiaRegs.SPICCR.bit.SPISWRESET = 0; SpiaRegs.SPICCR.bit.CLKPOLARITY = 0; SpiaRegs.SPICCR.bit.SPILBK = 0; SpiaRegs.SPICCR.bit.SPICHAR = 15; SpiaRegs.SPICTL.bit.CLK_PHASE = 1; SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; SpiaRegs.SPICTL.bit.TALK = 1; SpiaRegs.SPICTL.bit.SPIINTENA = 0; SpiaRegs.SPIBRR = 37; SpiaRegs.SPISTS.all = 0x0000; SpiaRegs.SPICCR.bit.SPISWRESET=1; SpiaRegs.SPIPRI.bit.FREE = 1; EDIS;}void ReadADSChain(void){ // 1) CONVST 上升沿触发 EALLOW; GpioDataRegs.GPASET.bit.GPIO19 = 1; DELAY_US(20); GpioDataRegs.GPACLEAR.bit.GPIO19 = 1; EDIS; SpiaRegs.SPISTS.bit.INT_FLAG = 1; SpiaRegs.SPITXBUF = 0x00; // 发空字节 while(!SpiaRegs.SPISTS.bit.INT_FLAG) {} adcData[0] = SpiaRegs.SPIRXBUF;}
赞0
评论
2025-06-27
您需要登录后才可以回复 登录 | 注册