F7 SPI的一个bug

[复制链接]
350|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

粉丝
快速回复 在线客服 返回列表 返回顶部