硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1329|回复: 9
收起左侧

[SPI/QSPI] 新人求助!SOS!救命!H7和DSP用SPI的方式进行通信,第一步就卡住了

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2021-12-10 14:15:26 | 显示全部楼层 |阅读模式
任务:DSP处理好AD采样后的数据,发给32进行后级的处理。H7作为从机,DSP作为主机。问题:H7的SPI怎么也配置不好。不能发也不能收。
之前用HAL库简单实现了STM32f1的SPI1和SPI2的相互通信。想着H7,把两个SPI初始化好,应该也是能通信的,但没有反应。
用f1给H7发,H7收不到,H7给f1发,f1也收不到。通信方式都用的查询方式。代码如下。应该没配置错吧,但是最基础的收发都做不到,更别提用DMA或者中断了。救命。
SPI1(主)初始化:
1.png
SPI2(从)初始化:
2.png
引脚:
3.png
主函数:
4.png

5.png



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-12-10 14:26:12 | 显示全部楼层
1、先使能SP时钟了,再配置,否则你的配置将不起作用。
2、函数使用那个HAL_SPI_TransmitReceive,收发二合一的。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-12-10 19:57:17 | 显示全部楼层
eric2013 发表于 2021-12-10 14:26
1、先使能SP时钟了,再配置,否则你的配置将不起作用。
2、函数使用那个HAL_SPI_TransmitReceive,收发二 ...

1、??怎么说?SPI时钟不是配了吗__HAL_RCC_SPI1_CLK_ENABLE();先配是啥意思啊。
2、u8 SPI1_ReadWriteByte(u8 TxData)
{
    u8 Rxdata;
    HAL_SPI_TransmitReceive(&SPI1_Handler,&TxData,&Rxdata,1, 1000);      
        return Rxdata;                              //返回收到的数据               
}
这个也是收发合一的,包装了一下而已
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-12-10 20:22:06 | 显示全部楼层
eric2013 发表于 2021-12-10 14:26
1、先使能SP时钟了,再配置,否则你的配置将不起作用。
2、函数使用那个HAL_SPI_TransmitReceive,收发二 ...

1、时钟不是使能过了吗?__HAL_RCC_SPI2_CLK_ENABLE(); 能细说一下吗?
2、u8 SPI1_ReadWriteByte(u8 TxData)
{
    u8 Rxdata;
    HAL_SPI_TransmitReceive(&SPI1_Handler,&TxData,&Rxdata,1, 1000);      
        return Rxdata;                              //返回收到的数据               
}
这个也是收发函数,包装了一下而已。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-12-10 20:52:27 | 显示全部楼层
不正月佥保佑 发表于 2021-12-10 20:22
1、时钟不是使能过了吗?__HAL_RCC_SPI2_CLK_ENABLE(); 能细说一下吗?
2、u8 SPI1_ReadWriteByte(u8 Tx ...

1、看到你的时钟了,你放在了MSP INIT里面
2、函数HAL_SPI_TransmitReceive你设置的是1秒超时,超时后就退出了。

改成HAL_SPI_TransmitReceive_IT,这样就没有超时问题了。然后建议你跑下CubeH7软件包里面SPI双机通信的例子,我跑过,都正常。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-12-10 21:38:41 | 显示全部楼层
eric2013 发表于 2021-12-10 20:52
1、看到你的时钟了,你放在了MSP INIT里面
2、函数HAL_SPI_TransmitReceive你设置的是1秒超时,超时后就 ...

2、cubeH7软件包在哪下载啊,手上只有一块F1和H7,怎么做参考啊
3、现在很疑惑的点就是,查询方式就算会有数据不对的地方,也总该发出去点才对,软件调试发送函数也执行了啊,接受函数也是,就是没数据。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-12-11 00:25:12 | 显示全部楼层
不正月佥保佑 发表于 2021-12-10 21:38
2、cubeH7软件包在哪下载啊,手上只有一块F1和H7,怎么做参考啊
3、现在很疑惑的点就是,查询方式就算 ...

1、F1,H7都有这个例子,https://www.st.com/en/embedded-software/stm32cubeh7.html
2、对比官方模板例子。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-12-11 14:23:41 | 显示全部楼层
eric2013 发表于 2021-12-11 00:25
1、F1,H7都有这个例子,https://www.st.com/en/embedded-software/stm32cubeh7.html
2、对比官方模板例 ...

1、我看了下,官方例子是针对的是啥开发板啊。全放主函数了,不会改啊。
2、对比了配置上都差不多啊,我想H7的SPI1和SPI2自通信,不就是把SPI配好,主函数一个发一个收,这里面可能存在什么问题呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-12-11 14:25:56 | 显示全部楼层
不正月佥保佑 发表于 2021-12-11 14:23
1、我看了下,官方例子是针对的是啥开发板啊。全放主函数了,不会改啊。
2、对比了配置上都差不多啊,我 ...

剩下自己解决下吧,就帮你这么多吧
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2021-12-11 14:29:22 | 显示全部楼层
eric2013 发表于 2021-12-11 14:25
剩下自己解决下吧,就帮你这么多吧

呜呜,好吧,谢谢了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 17:12 , Processed in 0.315142 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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