SPI接口协议的学习3

在SPI接口使用之前,需要实现SPI提供的服务,包括:
SPI接口的初始化、配置、打开、关闭、发送、接收等,如果使能了中断,还需要提供中断服务程序,使能了DAM,需要提供DMA的收发程序等。
实现上述功能服务前,还需要提供一些基础的服务,比如寄存器配置、状态获取、配置参数获取和设置、GPIO相关初始化和配置控制等。
通过前面学习可知,SPI寄存器的基地址获取方式:
spi_regs[SPI0]
spi_regs[SPI1]
spi_regs[SPI2]
其中SPI0、SPI1、SPI2为SPI编号。
通过基地址和寄存器配置相关的宏定义,可以实现对寄存器的配置。
对于SPI GPIO的访问,需要知道使用了哪个SPI,即SPI的编号,使用了哪个组。
当上层使用SPI接口时,传入参数为SPI设备。这里提供函数,通过SPI设备返回其编号,函数实现如下:
static u8 spi_get_info_id(spi_dev spi)//获取ID
{
ASSERT(spi < SPI_MAX_HW_NUM);
return spi;
}
这里SPI设备号和SPI编号一致,因此为相同的值。
上层调用SPI接口时传入SPI设备即为SPI的编号。
通过SPI设备,获取其用了哪个端口,即哪个组,函数实现如下:
static u8 spi_get_info_port(spi_dev spi)
{
u8 port = (u8) - 1;
u8 id = spi_get_info_id(spi);
switch (id) {
#if SPI0_ENABLE
case SPI0:
port = spi0_p_data.port;
break;
#endif
#if SPI1_ENABLE
case SPI1:
port = spi1_p_data.port;
break;
#endif
#if SPI2_ENABLE
case SPI2:
port = spi2_p_data.port;
break;
#endif
default:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值