打印

F7 SPI的一个bug

[复制链接]
193|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
喷水壶|  楼主 | 2018-8-10 07:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BUG, spi, TE, AN, se
用的都是最新的cubemx和库。
我用模拟的方式测试芯片dac8552 , 一切正常,输入0xffff的时候是5v输出。

用spi的时候。
1: cubemx的bug:    选择transmit only master ,  生成的代码里面还是hspi1.Init.Direction = SPI_DIRECTION_2LINES;   每次手工改1LINE.

2:   应该是芯片bug?   波特率已经是最低256分频了。
使用HAL_SPI_Transmit( &__SPIx, Buf, 3, 0xffffu );   或者自己写的  _spi_send_8(CPU_INT08U val)
各种乱跳。要么是输入0xffff时输出2.5V,只有正常的一半。    要么时不时没有响应。

我看了下hal里面的代码。。。
if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE))
      {
        if (hspi->TxXferCount > 1U)
        {
          /* write on the data register in packing mode */
          hspi->Instance->DR = *((uint16_t *)pData);





我自己写的_spi_send_8也是等待txe。
但是网上看到这么一个文字
https://www.cnblogs.com/swblog/p/3344736.html
经试验发现,在单线模式下,只能使用SPI_I2S_FLAG_BSY标志来判断设备是否空闲,而不能使用SPI_I2S_FLAG_TXE发送完成标志。
SPI1->DR = byte;    while((SPI1->SR & SPI_I2S_FLAG_BSY) != RESET);  //等待SPI忙完,这里不能使用SPI_I2S_FLAG_TXE发送完成标志,只能使用SPI_I2S_FLAG_BSY标志

迷茫了。。。


试验3:我用了全双工2LINE模式测试,还是发现芯片不太稳定,表现为有时候输入没反应。。。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

437

帖子

0

粉丝