感谢发烧友&RT-Thread,很高兴能加入Vision Board创客营,体验Vision Board!
本次测试任务是RT-Thread SPI功能验证。
01
一、简介

Vision Board搭载全球首颗 480 MHz Arm Cortex-M85芯片,拥有Helium和TrustZone技术的加持。SDK包里集成了OpenMV机器视觉例程,配合MicroPython 解释器,使其可以流畅地开发机器视觉应用。
02
二、环境搭建
1、创建工程

2、SPI配置
R7FA8D1BHECBD SPI内部框图如下:



3、FSP配置
瑞萨的这个RASC功能还是很强大,堪比STM的CubeMX。配置Vision-Board开发板需要更新FSP到5.1版本。在建好后的工程中,打开RASC来配置具体外设驱动。



03
三、SPI测试
外接SPI设备,或者直接利用已经接上的RW007模组都OK,甚至可以测试SPI主控的外部loopback。
直接短接SPI1的MISO和MOSI针脚,测试数据发送是否能收到。
#define SPI_NAME "spi10"
#define CS_PIN BSP_IO_PORT_04_PIN_13
static struct rt_spi_device *spi_dev;
/* attach spi device */
static int rt_spi_device_init(void)
{
struct rt_spi_configuration cfg;
rt_hw_spi_device_attach("spi1", SPI_NAME, CS_PIN);
cfg.data_width = 8;
cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB | RT_SPI_NO_CS;
cfg.max_hz = 1 *1000 *1000;
spi_dev = (struct rt_spi_device *)rt_device_find(SPI_NAME);
if (RT_NULL == spi_dev)
{
rt_kprintf("spi sample run failed! can't find %s device!
", SPI_NAME);
return -RT_ERROR;
}
rt_spi_configure(spi_dev, &cfg);
return RT_EOK;
}
INIT_APP_EXPORT(rt_spi_device_init);
/* spi loopback mode test case */
static int spi_sample(int argc, char **argv)
{
rt_uint8_t t_buf[32], r_buf[32];
int i = 0;
static struct rt_spi_message msg1;
for (i = 0; i < sizeof(t_buf); i++)
{
t_buf[i] = i;
}
msg1.send_buf = &t_buf;
msg1.recv_buf = &r_buf;
msg1.length = sizeof(t_buf);
msg1.cs_take = 1;
msg1.cs_release = 1;
msg1.next = RT_NULL;
rt_spi_transfer_message(spi_dev, &msg1);
rt_kprintf("spi rbuf : ");
for (i = 0; i < sizeof(r_buf); i++)
{
rt_kprintf("%x ", r_buf[i]);
}
rt_kprintf("
spi loopback mode test over!
");
return RT_EOK;
}
MSH_CMD_EXPORT(spi_sample, spi loopback test);
(左右移动查看全部内容)

04
四、运行测试



05
五、结论
本文通过创建RT-Studio工程,实现了Vision Board上的SPI设备驱动配置和简单的SPI主控的外部loopback功能测试,依托于RT-Studio和FSP强大的功能,用户可以很方便的完成功能实现。
审核编辑:彭菁
全部0条评论
快来发表一下你的评论吧 !