硬汉嵌入式论坛

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

[SPI控制器] 分享个H7-TOOL的SPI控制器做从机,V7开发板的SPI做主机的实际通信案例操作步骤

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-10-18 00:35:43 | 显示全部楼层 |阅读模式
测试一个H7-TOOL做从机,V7开发板做主机的测试。

优先熟悉下这个帖子:
H7-TOOL的LUA小程序教程第11期:SPI总线从机模式操作说明V1.0
https://www.armbbs.cn/forum.php?mod=viewthread&tid=122108



1、V7板子运行的原始例子 V7-070_SPI DMA双机通信(主机),未做任何修改。

2、接线情况



接线实物图:



3、板子和TOOL接好线,都上电,  然后TOOL的上位机配置如下:





实际效果如下:

点击上位机的执行按钮后,5秒内按下V7开发板的K1按键,会看到V7开发板发送过来的4个字节数据0,1,2,3



多执行几次



[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*
*        模块名称 : SPI 主机
*        文件名称 : demo_spi_master.c
*        版    本 : V1.0
*        说    明 : SPI 主机
*                _________________________                        _____________________________
*                |           ______________|                      |______________________       |
*                |          |     SPI1     |                      |        SPI1          |      |
*                |          |              |                      |                      |      |
*                |          |     CLK(PB3) |______________________|(PB3)CLK              |      |
*                |          |              |                      |                      |      |
*                |          |    MISO(PB4) |______________________|(PB4)MISO             |      |
*                |          |              |                      |                      |      |
*                |          |    MOSI(PB5) |______________________|(PB5)MOSI             |      |
*                |          |              |                      |                      |      |
*                |          |    NSS(PG10) |______________________|(PG10)NSS             |      |
*                |          |______________|                      |______________________|      |
*                |                         |                      |                             |
*                |                         |                      |                             |
*                |                         |                      |                             |
*                |                      GND|______________________|GND                          |
*                |                         |                      |                             |
*                |_STM32H7 Master _________|                      |_STM32H7 Slave ______________|
*     
*        修改记录 :
*                版本号  日期        作者     说明
*                V1.0    2022-04-08 Eric2013  正式发布
*
*        Copyright (C), 2020-2030, 安富莱电子 [url=http://www.armfly.com]www.armfly.com[/url]
*
*********************************************************************************************************
*/
#include "demo_spi_master.h"
#include "bsp.h"
  
  
static void sfDispMenu(void);
  
/*
*********************************************************************************************************
*        函 数 名: DemoSpiMaster
*        功能说明: SPI 主机通信
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
void DemoSpiMaster(void)
{
        uint8_t count = 0;
    uint8_t ucKeyCode;                /* 按键代码 */
      
    /***************设置SPI Flash片选上拉,防止影响 ***************/
    {
        GPIO_InitTypeDef gpio_init;
  
        /* 打开GPIO时钟 */
        __HAL_RCC_GPIOD_CLK_ENABLE();
          
        gpio_init.Mode = GPIO_MODE_OUTPUT_PP;        
        gpio_init.Pull = GPIO_NOPULL;                
        gpio_init.Speed = GPIO_SPEED_HIGH;          
        gpio_init.Pin = GPIO_PIN_13;        
        HAL_GPIO_Init(GPIOD, &gpio_init);
  
        GPIOD->BSRR = GPIO_PIN_13;
    }
      
        sfDispMenu();                /* 打印命令提示 */
          
        bsp_StartAutoTimer(0, 100);        /* 启动1个100ms的自动重装的定时器 */
          
        while(1)
        {
                bsp_Idle();                /* 这个函数在bsp.c文件。用户可以修改这个函数实现CPU休眠和喂狗 */
                  
                /* 判断定时器超时时间 */
                if (bsp_CheckTimer(0))        
                {
                        /* 每隔100ms 进来一次 */
                        bsp_LedToggle(2);
                }
          
        /* 按键滤波和检测由后台systick中断服务程序实现,我们只需要调用bsp_GetKey读取键值即可。 */
                ucKeyCode = bsp_GetKey();        /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
                if (ucKeyCode != KEY_NONE)
                {
                        switch (ucKeyCode)
                        {
                                case KEY_DOWN_K1:                        /* K1键按下,发送数据给从机*/
                    g_spiTxBuf[0] = count++;
                    g_spiTxBuf[1] = count++;
                    g_spiTxBuf[2] = count++;
                    g_spiTxBuf[3] = count++;
                    g_spiLen = 4;
                    printf("SPI主机发送数据:%d,%d,%d,%d\r\n", g_spiTxBuf[0],g_spiTxBuf[1],g_spiTxBuf[2],g_spiTxBuf[3]);
                    bsp_spiTransfer();
                    printf("SPI主机接收数据:%d,%d,%d,%d\r\n", g_spiRxBuf[0],g_spiRxBuf[1],g_spiRxBuf[2],g_spiRxBuf[3]);
                                        break;
  
                                default:
                                        /* 其它的键值不处理 */
                                        break;
                        }
                  
                }
        }
}
  
/*
*********************************************************************************************************
*        函 数 名: sfDispMenu
*        功能说明: 显示操作提示菜单
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void sfDispMenu(void)
{
        printf("SPI主机程序\r\n");
        printf("K1按键按下,SPI主机开启SPI全双工通信\r\n");
}
  
/***************************** 安富莱电子 [url=http://www.armfly.com]www.armfly.com[/url] (END OF FILE) *********************************/
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-1 13:21 , Processed in 0.202210 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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