lugl4313820 发表于 2024-2-18 15:20

【ST NUCLEO-U5A5ZJ-Q开发板测评】解决SPI GPDMA传输

<div class='showpostmsg'><p><a href="https://bbs.eeworld.com.cn/thread-1271933-1-1.html">【ST NUCLEO-U5A5ZJ-Q开发板测评】SPI DMA如何配置传输&nbsp;</a></p>

<p>这里我遇到了问题,后面用逻辑分析仪分析时序,发现只传了一个字节就停止了。后面找到了官方的例程分析了一下,找到的原因。现在就配置记录如下:</p>

<p>&nbsp;</p>

<p>&nbsp; 还有就是需要重写中断回调函数:</p>

<pre>
<code>void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{

/* Set the SSD1306 state to ready */
SSD1306_Disp.state = SSD1306_STATE_READY;
}

void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
{
        SSD1306_Disp.state = SSD1306_SPI_ERROR;
}

void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */
{
/* Prevent unused argument(s) compilation warning */
        //SSD1306_Disp.state = SSD1306_STATE_READY;

/* NOTE : This function should not be modified, when the callback is needed,
            the HAL_SPI_TxHalfCpltCallback should be implemented in the user file
   */
}</code></pre>

<p>这样就解决问题了,但是,在中断传结束之后,如果不延时1毫秒,就会卡死,这样有点影响性能:</p>

<p> &nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

wangerxian 发表于 2024-2-18 17:00

<p>你这用的是STM32CubeMX配置的吗?看着怎么感觉不太一样。</p>

lugl4313820 发表于 2024-2-18 17:03

wangerxian 发表于 2024-2-18 17:00
你这用的是STM32CubeMX配置的吗?看着怎么感觉不太一样。

<p>是用STM32CubeIDE里面的STM32CubeMAX来配置的,现在新的配置出来的MDK工程会少东西,被绑死了。</p>

wangerxian 发表于 2024-2-18 17:17

lugl4313820 发表于 2024-2-18 17:03
是用STM32CubeIDE里面的STM32CubeMAX来配置的,现在新的配置出来的MDK工程会少东西,被绑死了。

<p>很多都在底层给写死了,利弊感觉都存在。因为不能修改底层,也看不到配置了哪些寄存器。</p>

lugl4313820 发表于 2024-2-18 19:38

wangerxian 发表于 2024-2-18 17:17
很多都在底层给写死了,利弊感觉都存在。因为不能修改底层,也看不到配置了哪些寄存器。

<p>现在ST就是想让开发者快速上手,对于我们这种新手来说,还算友好。但是我看到我们国产的武汉芯源,他们的文档比ST,我感觉比较适合我们中文的开发者。</p>

wangerxian 发表于 2024-2-19 09:10

lugl4313820 发表于 2024-2-18 19:38
现在ST就是想让开发者快速上手,对于我们这种新手来说,还算友好。但是我看到我们国产的武汉芯源,他们的 ...

<p>是啊,中文文档看着比英文流畅多了。</p>
页: [1]
查看完整版本: 【ST NUCLEO-U5A5ZJ-Q开发板测评】解决SPI GPDMA传输