rt_hw_spi_device_attach 函数使用方法请教

发布于 2020-07-22 16:24:29

我先用HAL库初始化了SPI2验证硬件都时正常的,可以正常收发。之后我想使用RTT自带的接口去调用SPI但是始终不成功,以下是我的使用方法,请哪位大神帮我指点一下。

这里输入代码

#include "SPI\SPI1.h"
#include "drv_spi.h"
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <drv_qspi.h>
#include <rthw.h>
#include <finsh.h>

#define SPI2_DEVICE_NAME     "spi20"
#define SPI2_BUS_NAME     "spi2"
struct rt_spi_device *spi2_dev_ecat;
void SPI2_Init(void) 
{
    struct rt_spi_configuration cfg;
    
    if (rt_hw_spi_device_attach(SPI2_BUS_NAME,SPI2_DEVICE_NAME,GPIOD,GPIO_PIN_4)!= RT_EOK)
    {
        LOG_E("spi2 bud attach error");
        return;
    }
    
    /* 查找 spi 设备获取设备句柄 */
    spi2_dev_ecat = (struct rt_spi_device *)rt_device_find(SPI2_DEVICE_NAME);
    if (!spi2_dev_ecat)
    {
            LOG_E("spi2 run failed! can't find %s device!\n", SPI2_DEVICE_NAME);
            return;
    }

    cfg.data_width = 8;
  cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_3 | RT_SPI_MSB ; /* SPI Compatible: Mode 0. */
  cfg.max_hz =  1000000; /* 10M */
  if (rt_spi_configure(spi2_dev_ecat, &cfg)!= RT_EOK)
    {
        LOG_E("spi2 configure error");
        return;
    };    
    rt_kprintf("spi2 ini success\n");
} 

 uint8_t WR_CMD (uint8_t cmd)  
{     
        uint8_t Temp=0;
        rt_spi_transfer(spi2_dev_ecat,&cmd,&Temp,1);    
        return Temp;    
}

收发数据始终不对。是不是我哪里弄错了??

查看更多

关注者
0
被浏览
154
whj467467222
whj467467222 2020-07-23

rt_spi_transfer是只发送一次数据,你是逻辑分析仪抓到的报文就是错的吗?

2 个回答
dingzijie
dingzijie 2020-07-22
#define SPI2_DEVICE_NAME     "spi20"
#define SPI2_BUS_NAME     "spi2"

struct rt_spi_device *spi2_dev_ecat;

这个设备声明已经加了

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友