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

STM32mp157的spi问题

[复制链接]
白色的乌鸦 提问时间:2022-5-20 15:16 / 未解决
使用myir的开发板进行spi通信。
问题:spi1和spi5在debug模式下都可以正常接收数据.
emmc模式下以固件形式加载则spi5可以正常通信,使用spi1则无法接收到数据。
之后屏蔽掉spi1的a7节点,开启(或不开启)m4_spi1的节点依然无法进行通信。
问题点:两个spi在debug模式下或者在a核下生成节点再去读写节点进行spi通信都可以正常通信。spi5无论a核下有无对应spi节点以及开启或不开启m4_spi5节点都可以正常通信。spi1无论a核下有无对应spi节点,以及开启或不开启m4_spi1节点都不能通信。(前提:有节点的情况下a核没有去执行读写操作)。

在关闭a7的spi1节点后,在emmc模式下将其对应的gpioz0-gpioz3节点导出并设置为输入中断成功(确认没有其他资源使用这些gpio)
m核和a核之间也可以正常进行通信。
附件为设备树与测试demo


spi1.zip

下载

4.38 MB, 下载次数: 9, 下载积分: ST金币 -1

收藏 评论21 发布时间:2022-5-20 15:16

举报

21个回答
mpu.china 回答时间:2022-6-10 17:54:43
这个情况感觉是要对比一下时钟的配置
白色的乌鸦 回答时间:2022-6-1 13:36:40
Allonli 发表于 2022-5-27 12:13
你好,你这个现象有点奇怪,有没有确认下每次做的修改尝试是不是真的生效了?SPI1不是secure外设,它跟SPI5 ...

我修改了TF内的stm32mp15xx-ya157c.dtsi内的CLK_SPI2S1_PLL3Q为CLK_SPI2S1_PLL4P(CubeIDE内的tf时钟定义为此)后,使用HAL_SPI_Receive函数接收,出现了一段时间spi1Flag==HAL_OK一段时间又为error的情况,另外接收成功的情况下打印数据发现接收到的数据并不正确。此外spi5虽然能够成功接收,但是使用dma传输的情况下发现使用同样的m4程序(spi5速度调到最大),debug模式可以成功触发接收完成中断但是数据不对(降低速度后可以接收到正确的数据),a7加载m4启动的情况下可以成功触发接收完成中断并且数据正确。但是两者接收完成的时间相差了30us。

白色的乌鸦 回答时间:2022-6-9 14:52:58
Allonli 发表于 2022-6-2 15:14
资源分配冲突的可能性比较大。
可以参考ST官方firmware下的spi例子,这里面即是使用的SPI1通讯。
对应设备 ...

我在正点原子的stm32mp157上进行了测试,使用其原厂镜像发现spi1一样无法接收成功。修改其tf内的CLK_SPI2S1_PLL3Q为CLK_SPI2S1_PLL4P后spi1可以正常进行使用。但是在myir的stm32mp157上做了同样的修改却存在问题。
在spi1不接任何外设的情况下,debug模式下接收都是0000,在emmc模式下,tf做了同样的修改,正点原子的现象与debug模式一样一直是接收成功,且值为0000,而myir的开发板打印如下,虽然有接收成功的打印出现了(未修改则全为error),但其值却不对,我不确定是两者的内核不同导致的还是硬件差异的原因


mpu.china 回答时间:2022-5-27 12:13:09
你好,你这个现象有点奇怪,有没有确认下每次做的修改尝试是不是真的生效了?SPI1不是secure外设,它跟SPI5不同的就是SPI1和I2S1共用了模块,你看看这个冲突存不存在?同样的可以试下也有共用情况的SPI2有没有这样的问题?


白色的乌鸦 回答时间:2022-6-1 15:07:38
Allonli 发表于 2022-5-27 12:13
你好,你这个现象有点奇怪,有没有确认下每次做的修改尝试是不是真的生效了?SPI1不是secure外设,它跟SPI5 ...

而且另外一个问题,将PH5设为gpio中断,spi5用软件控制即把pf6设置为gpio输出后就无法配置spi5(提示映射冲突)。stm32mp157芯片。你可以用mx配置看一下
mpu.china 回答时间:2022-6-2 15:14:14

资源分配冲突的可能性比较大。
可以参考ST官方firmware下的spi例子,这里面即是使用的SPI1通讯。
对应设备树文件为stm32mp157c-ev1-m4-examples.dts

\STM32Cube\Repository\STM32Cube_FW_MP1_V1.5.0\Projects\STM32MP157C-DK2\Examples\SPI
白色的乌鸦 回答时间:2022-6-27 16:04:18
Allonli 发表于 2022-6-10 17:54
这个情况感觉是要对比一下时钟的配置

我现在有两块板子,一块是myir的开发板,一块是自己的开发板,用到核心板都是myir的157,只是底板不一样。我将spi1的输入和输出短接,使用相同的镜像核测试elf文件,得到的结果如下图(emmc模式),我不知道底板不同是否会对环回测试有影响,但是可以看出自己的板子存在超过正常的时间的情况
myir环回测试(自己的板子单独m4核debug模式也为此图)



自己的环回测试


白色的乌鸦 回答时间:2022-6-28 15:36:55
Allonli 发表于 2022-6-10 17:54
这个情况感觉是要对比一下时钟的配置

我使用spi1进行回环测试,在同样的镜像和同样的elf文件的情况下,从myir借过来的开发板可以接收到正常数据,且接收的时间一直是10几us,但是我们改了底板的板子却出现了接收时间为几百ms的情况(超长接收时间打印的数据结果是正确的,1000次大概400次超长时间,其余时间为10几us)。
mpu.china 回答时间:2022-6-29 11:11:34
我使用spi1进行回环测试,在同样的镜像和同样的elf文件的情况下,从myir借过来的开发板可以接收到正常数据,且接收的时间一直是10几us,但是我们改了底板的板子却出现了接收时间为几百ms的情况(超长接收时间打印的数据结果是正确的,1000次大概400次超长时间,其余时间为10几us)。
确认下底板SPI布线距离有多长?会不会受到电磁信号干扰?降低SPI速率测试一下?
白色的乌鸦 回答时间:2022-7-5 08:32:52
Allonli 发表于 2022-6-29 11:11
确认下底板SPI布线距离有多长?会不会受到电磁信号干扰?降低SPI速率测试一下?
...

我认为底板不同镜像也应该做出相应的裁剪,我将myir的镜像放到百问网的开发板上(百问网也是使用的myir的核心板),发现超过正常接收时间的情况也很多,使用百问网的镜像则超过正常时间的次数要少很多但依然存在,说明百问网的镜像裁剪并没有裁剪到位,另外将myir的内核中的wlan节点屏蔽掉之后,ifconfig -a查看发现wlan节点没有了,此时在myir的开发板上也会超时。

mpu.china 回答时间:2022-7-5 11:39:48
问题似乎一直没有收敛。需要明确,核心板上一般仅有处理器,DDR,flash,电源管理等关键部件,但不排除某些厂家会有一些其他的器件在上面,这就要看看是不是占用到了一些外设接口。底板不同一般影响到的就是外设的设计,各个管脚分配使用的功能都不同,内核设备配置当然不同。建议将问题收敛一下。
白色的乌鸦 回答时间:2022-7-5 17:44:53
Allonli 发表于 2022-7-5 11:39
问题似乎一直没有收敛。需要明确,核心板上一般仅有处理器,DDR,flash,电源管理等关键部件,但不排除某些 ...

我把myir的wifi节点关掉之后 ,ifconfig 可以看到已经没有了wlan这个节点,此时spi1在myir的板子上也会出现超时的现象。查看发现它和spi1所使用的时钟均为pll4p,我将tf内的sdmmc3(wifi节点名)的时钟关掉问题依然存在。lsmod可以看到cfg80211这个节点,我查了一下这似乎是个与wifi相关的器件,我想关闭节点并没有让内核不去加载这个驱动。去掉蓝牙节点内核启动依然有Starting Bluetooth service...的打印。应该还需要修改启动的文件,让其不去启动这些服务。不知道我的理解对不对。
mpu.china 回答时间:2022-7-6 09:49:30
建议将问题收敛一下,不要引入越来越多的干扰因素。对SPI这个外设,无外乎时钟和管脚资源的分配是否有冲突,硬件设计是否有干扰
白色的乌鸦 回答时间:2022-7-6 16:41:34
Allonli 发表于 2022-7-6 09:49
建议将问题收敛一下,不要引入越来越多的干扰因素。对SPI这个外设,无外乎时钟和管脚资源的分配是否有冲突 ...

具体应该怎样去做,我把内核里无关的节点都屏蔽了,还是不行。

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