这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 野火启明6M5适配SPI

共3条 1/1 1 跳转至

野火启明6M5适配SPI

助工
2024-10-18 20:47:01   被打赏 20 分(兑奖)     打赏

芯片SPI资源分配情况

管脚功能定义野火板卡支持情况
P700MISOA_C以太网占用
P701MOSIA_C以太网占用
P702RSPCKA_C以太网占用
P703SSLA0_C以太网占用
P704SSLA1_C以太网占用
P705SSLA2_C以太网占用
P708SSLB3_B电容按键占用
P415SSLB2_BEEPROM占用
P414SSLB1_BEEPROM占用
P413SSLB0_BSD卡占用
P412RSPCKB_BSD卡占用
P411MOSIB_BSD卡占用
P410MISOB_BSD卡占用
P407SSLA3_AUSB插拔检测占用
P406SSLA3_C以太网占用
P300SSLA1_BDebug口
P301SSLA2_BJ25-1
P302SSLA3_BJ25-10
P202MISOA_AJ25-3
P203MOSIA_AJ25-2
P204RSPCKA_AJ25-4
P205SSLA0_ASD卡占用
P206SSLA1_ASD卡占用
P207SSLA2_ATSCAP,怀疑是和触摸按键相关
P112SSLA0_BJTAG串口占用
P111RSPCKA_BJ25-1
P110MISOA_BJ25-8
P109MOSIA_BDebug口
P108SSLA0_BDebug口
P100MOSIB_AWIFI模块SPI
P101MISOB_AWIFI模块SPI
P102RSPCKB_AWIFI模块SPI
P103SSLB0_AJ29-23
P104SSLB1_AJ26-7
P105SSLB2_AJ26-10
P106SSLB3_AWIFI模块SPI

   从资源上看,板卡端最终可以使用的SPI接口有两个,一个是接wifi模块的SPIB,另一个是接在PMOD接口上的SPIA。查阅资料,发现野火板卡配套的ESP8266并未实现对应的SPI功能,若需开发,还需要对应的编写esp8266固件,因此优先匹配PMOD接口的SPIA。

配置过程

RTT配置添加

KConfig添加SPI配置:

image.png

drv_spi.c中是直接引用RASC生成的文件,因此不需要在drv_config.h中添加SPI相关头文件。

配置代码

在emu中运行menuconfig,打开SPI配置

image.png

运行scons --target=mdk5,把dac部分导入工程

image.png

配置SPI

打开新生成的keil工程后运行RASC,增加SPI相关配置

image.png

image.png

image.png

由于PMOD接口所使用的cs脚与硬件对应脚不一致,因此只能以gpio的方式实现cs脚,所以还需要配置P301为CS脚

image.png

生成代码配置

image.png

修改代码

       由于spi暂无命令行测试命令,因此需要手动编写测试脚本。

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author        Notes
 * 2021-10-10     Sherman       first version
 */

#include <rtthread.h>
#include "hal_data.h"
#include <rtdevice.h>

void hal_entry(void)
{
    rt_err_t res;
    static struct rt_spi_device spi_dev; 
    uint8_t sendbuf[6]={0,1,2,3,4,5};
    static rt_uint32_t spi_cs = BSP_IO_PORT_03_PIN_01;

    res = rt_spi_bus_attach_device_cspin(&spi_dev,"spi00", "spi0", spi_cs, (void*)spi_cs);
    if (res != RT_EOK)
    {
        rt_kprintf("rt_spi_bus_attach_device!\r\n");
    }

    struct rt_spi_configuration cfg;
    cfg.data_width = 8;
    cfg.max_hz = 100000; // 由于暂时手上的逻辑分析仪速率只能到24M,因此只能抓低速的spi通信
    cfg.mode = RT_SPI_MODE_1 | RT_SPI_MSB;
    spi_dev.bus->owner = &spi_dev; 
    rt_spi_configure(&spi_dev,&cfg);

    while (1)
    {
        rt_spi_send(&spi_dev, sendbuf, sizeof(sendbuf));
        rt_thread_mdelay(1000);
    }
}

编译固件

结果验证

由于此次验证不再通过msh敲命令的方式去验证,因此不再抓串口数据,而是直接采用逻辑分析仪抓取波形并分析数据的方式来验证结果。

image.png

从逻辑分析仪抓到的数据来看,与预期的数据一致。





关键词: 野火     启明     适配     spi    

专家
2024-10-19 07:08:30     打赏
2楼

看一下


高工
2024-10-19 09:39:35     打赏
3楼

这种选配件的方式使用起来也相当简单。

如果要应用到工业控制领域,是不是也要review一下原来的代码啊


共3条 1/1 1 跳转至

回复

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