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

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个回答
lugl 最优答案 回答时间:2024-2-19 11:00:19

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

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

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. 如果不是,可以检测一下底层驱动是否正常,对比一下官方的库例程。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版