这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【MAX32630FTHR开发板】SPI配置调试记录

共1条 1/1 1 跳转至

【MAX32630FTHR开发板】SPI配置调试记录

高工
2025-10-19 21:21:22     打赏

【前言】

MAX32630这款MCUSPI的使用的文章非常少,而官方的示例也是使用了SPIM1SPIM0,而我需要使用SPIM2,他们的配置又与其他的两个不同,为此配置与调试历经了许多的问题,最后还是调好了,为此记录如下:

【硬件】

1、MAX32630FTHR开发板

2、逻辑分析仪

【调试步骤】

1、首先找到原理图,确定IO,我这里只能使用SPIM2这组外设,CS选用SSEL


image.png

2、参考mx25的初始化配置:

    // Initialize the SPIM
    spim_cfg_t cfg;
    cfg.mode = 0;
    cfg.ssel_pol = 0;
    cfg.baud = MX25_BAUD;

    sys_cfg_spim_t sys_cfg;

    // MX25 IO Config                  core I/O, ss0, ss1, ss2, quad, fast I/O
    sys_cfg.io_cfg = (ioman_cfg_t)IOMAN_SPIM1(1,   1,  0,    0,    1,        1);
    sys_cfg.clk_scale = CLKMAN_SCALE_AUTO;

    if((error = SPIM_Init(MXC_SPIM1, &cfg, &sys_cfg)) != E_NO_ERROR) {
        printf("Error initializing SPIM %d\n", error);
        while(1) {}
    } else {
        printf("SPIM Initialized\n");
    }

但是我找到IOMAN_SPIM2他的传与参数与SPIM1的又不相同:

image.png

因此就不参观照SPIM1的来设置了。

在用户手册中我找到了IOMAN_SPIM2的参数说明:

image.png

在与SPIM两者之间主要存在有SPIM2的GPIO有重映射来定位管脚,即SPIM2的第一个参数m是可以有0,1,2来映射对应的管脚,从我们的原理图上看,应该要映射到MappingB组中。因此m为1

SR我们没有用到,因也可以不用配置。

经过确认后,我配置参数如下:

     // Initialize the SPIM
     spim_cfg_t cfg;
     cfg.mode = 0;
     cfg.ssel_pol = SPIM_SSEL0_LOW;
     cfg.baud = SSD1361_BAUD;
     static spim_req_t req;
     sys_cfg_spim_t sys_cfg;
	
     // SSD1361 IO Config                     Map   core I/O,  ss0, ss1, ss2, sr0   sr1 quad, fast I/O
     //                                       MAPB             P5_3
    sys_cfg.io_cfg = (ioman_cfg_t)IOMAN_SPIM2(1,          1,   1,   0,   0,   0,    0,   0,   1); 
    sys_cfg.clk_scale = CLKMAN_SCALE_AUTO;
    if((error = SPIM_Init(MXC_SPIM2, &cfg, &sys_cfg)) != E_NO_ERROR) {
        printf("Error initializing SPIM %d\n", error);
        while(1) {}
    } else {
        printf("SPIM Initialized\n");
    }

3、发送数据测试

	uint8_t buf[3] = {0xee,0xaa,0x11};
	req.ssel = 0;
	req.len     = 3;
        req.tx_data  = buf;
        req.rx_data  = NULL;
	req.width = SPIM_WIDTH_1;
        req.deass   = 0;
        SPIM_Trans(MXC_SPIM2, &req);

但是我发送出来的数据用逻辑分析仪观察即不是我想要的结果:

image.png

发现SCK的时序是乱的。

【原因查找】

经用示波器观察,他的电压明显不足,高电压只有1.8V,我使用1.8V来解析,就可以正确的识别:

image.png

我需要使用的SPI是用来驱动LCD屏的,他的电压为3.3V因此需要将MAX32630的IO输出设置为3.3V

【解决方法】

MAX32630有一个函数为SYS_IOMAN_UseVDDIOH,是用来设置IO的电压输出值的,加入代码如下:

const gpio_cfg_t ssd1361_spi = { PORT_5, (PIN_0 | PIN_1 | PIN_3), GPIO_FUNC_GPIO, GPIO_PAD_NORMAL };
SYS_IOMAN_UseVDDIOH(&ssd1361_spi);

重新更新固件后就可以正确识别了:

image.png

【总结】

由于max32630这款芯片比较老,在国内使用的人非常少,资料也很难找到,今天用了大约半天,终于把SPI的时序给调出来了。特此记录。





关键词: MAX32630FTHR     SPI    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]