TI中文支持网
TI专业的中文技术问题搜集分享网站

TDC7200: 使用STM32的SPI读取TDC7200的值,读出来的全是0

Part Number:TDC7200

使用STM32的SPI读取TDC7200的值,读出来的全是0

main.c文件中

uint8_t Q;

uint16_t W;

TDC7200_Init();

TDC7200_TIME1(&Q,&W);

OLED_Init();

OLED_ShowNum(16,16,Q,4,16,1);

OLED_ShowNum(0,32,W,4,16,1);

spi.c文件中

uint8_t MySPI_SwapByte(uint8_t ByteSend){

uint8_t i , ByteReceive = 0x00;

for(i = 0; i < 8; i++){

MySPI_W_MOSI(ByteReceive&(0x80>>i));

MySPI_W_SCK(1);

if(MySPI_R_MISO()==1){ByteReceive|=(0x80>>i);}

MySPI_W_SCK(0);

}

return ByteReceive;

}

void TDC7200_TIME1(uint8_t *q,uint16_t *w)

{

MySPI_Start();

MySPI_SwapByte(0x11);//读取时钟计数器值

*q = MySPI_SwapByte(0xFF);

*w = MySPI_SwapByte(0xFF);

*w <<= 8;

*w |= MySPI_SwapByte(0xFF);

MySPI_Stop();

}

电路图如下

zhiwei zheng:

这个是什么问题呀,接线不对还是数据没有发送成功?

,

Alice:

您好,

     单纯从代码看,uint8_t MySPI_SwapByte(uint8_t ByteSend)函数中ByteSend变量没用到,

     导致MySPI_SwapByte(0x11);//读取时钟计数器值 ———0x11没有实际发送出去。

      没理解这段代码的作用,您可以用示波器实际监测一下SPI口的波形看一下。

     

,

zhiwei zheng:

.

,

Alice:

您好,

       建议把程序中发送和接收用两个函数写, 参考数据手册“Figure 21. SPI Protocol”中的时序。

       可先测试寄存器默认值来检查SPI时序,比如01h默认值是40h。

       

,

zhiwei zheng:

您好,

请问有没有参考程序啊

,

Alice:

您好,

   很抱歉没有参考程序,寄存器配置的话可以使用EVM GUI:

   www.ti.com/…/TDC7200EVM

赞(0)
未经允许不得转载:TI中文支持网 » TDC7200: 使用STM32的SPI读取TDC7200的值,读出来的全是0
分享到: 更多 (0)