华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 1563|回复: 3

SPI使用中的BUG?(SWM19S+SWM34S)

[复制链接]

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
发表于 2024-2-29 14:59:26 | 显示全部楼层 |阅读模式
本帖最后由 dawoo 于 2024-2-29 15:00 编辑

/******************************************************************************************************************************************
* 函数名称:        SPI_Write()
* 功能说明:        写入一个数据
* 输    入: SPI_TypeDef * SPIx                指定要被设置的SPI,有效值包括SPI0、SPI1
*                        uint32_t                                要写入的数据
* 输    出: 无
* 注意事项: 无
******************************************************************************************************************************************/
void SPI_Write(SPI_TypeDef * SPIx, uint32_t data)
{
    SPIx->DATA = data;
}

/******************************************************************************************************************************************
* 函数名称:        SPI_WriteWithWait()
* 功能说明:        写入一个数据并等待数据完全发送出去
* 输    入: SPI_TypeDef * SPIx                指定要被设置的SPI,有效值包括SPI0、SPI1、SPI1
*                        uint32_t                                要写入的数据
* 输    出: 无
* 注意事项: 无
******************************************************************************************************************************************/
void SPI_WriteWithWait(SPI_TypeDef * SPIx, uint32_t data)
{
    SPIx->STAT |= (1 << SPI_STAT_WTC_Pos);

    SPIx->DATA = data;

    while((SPIx->STAT & SPI_STAT_WTC_Msk) == 0);
}

我在SWM91S上使用SPI中发现这样的问题:我如果调用SPI_Write();用逻辑分析仪看到某些数据不正常。但是我改成SPI_WriteWithWait();就工作正常了。
我是使用了单向的SPI驱动一块TFT屏。
同一个屏,我在使用SWM34S(100pin)的MCU时,却不能正常工作。目前还在找问题。

问题:1,这个算是BUG吗?
问题:2,SWM34S在使用SPI时有额外的初始化吗?我已经参考过例子。


回复

使用道具 举报

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
发表于 2024-2-29 17:38:04 | 显示全部楼层
SPI_Write() 只是将数据写入 SPIx->DATA 寄存器,,如果 CPU 写的太快,,SPI 来不及将数据发出,,就会丢失数据。。
回复

使用道具 举报

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
 楼主| 发表于 2024-3-1 10:05:26 | 显示全部楼层
了解了,我估计是这个原因丢数据了。
回复

使用道具 举报

4

主题

10

帖子

111

积分

注册会员

Rank: 2

积分
111
QQ
 楼主| 发表于 2024-3-13 10:41:10 | 显示全部楼层
补充说明,在调这个TFT的屏时,发现除了SPI还要注意这个屏的复位的延时。
我不加屏复位后的延时时间长度,SWM431的SPI只有1/256的速度才能让屏正常工作。
我加屏复位后的延时,SWM431可以跑极快的速度,一点问题也没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2025-1-10 06:24 , Processed in 0.032666 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表