请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SPI DMA发送不成功的问题

[复制链接]
lugl 提问时间:2024-2-16 22:10 / 未解决
我今天在使用STM32G474RE来使用SPI+DMA发送给OLED屏时,在启动SPI+DMA发送时,如果使用如下代码:

/**
* @brief  Updates buffer from internal RAM to OLED with SSD1306 in horizontal addressing mode (blocks until interrupt function initialized)
* @note   This function must be called each time you do some changes to OLED, to update buffer from RAM to OLED
*/
uint8_t SSD1306_UpdateScreen(void)
{
        /* Writing data to display buffer - non-blocking function with SPI and DMA */
        uint8_t i,n,state;
        for(i= 0; i<8;i++)
        {
                ssd1306_SPI_WriteCmd(0xb0+i);
                ssd1306_SPI_WriteCmd(0x00);
                ssd1306_SPI_WriteCmd(0x10);
                state = ssd1306_SPI_WriteDisp(&SSD1306_Buffer[SSD1306_WIDTH*i],SSD1306_WIDTH);
                if(state == SSD1306_SPI_ERROR)
                {
                        break;
                }
        }
        return state;
}
收藏 评论3 发布时间:2024-2-16 22:10

举报

3个回答
xmshao 回答时间:2024-2-19 10:05:04
你现在的问题是说  SPI DMA发送不成功,旁人目前没法根据你给出的信息做分析确认。


你这里重点提到ssd1306_SPI_WriteDisp()函数,具体函数体并不清楚。我猜测是你在该


函数里进一步调用SPI DMA发送函数。


建议你基于DMA方式的SPI发送功能做验证,使用ST的库函数即可很快验证。
通过验证它,对SPI/DMA相关配置做验证确认。


之后,再来使用ssd1306_SPI_WriteDisp函数,注意变量类型、传输长度等细节。
butterflyspring 回答时间:2024-2-19 10:09:10
1. 用逻辑分析仪看看是否发出了波形,是否是期望的数值。
2. 如果是,那么检查一下 OLED 这边的时序。
3. 如果不是,可以检测一下底层驱动是否正常,对比一下官方的库例程。
lugl 回答时间:2024-2-19 11:00:19

butterflyspring 发表于 2024-2-19 10:09</p>
<ol>
<li>用逻辑分析仪看看是否发出了波形,是否是期望的数值。</li>
<li>如果是,那么检查一下 OLED 这边的时序。</li>
<li>...

我已经找到问题了,是链表没有设置对,感谢了!

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版