SPI接口协议的学习4

本文档详细介绍了SPI接口的基础服务函数,包括获取SPI设备模式、主从机角色和时钟频率的函数,以及设置和获取波特率的方法。此外,还提供了SPI发送和接收字节的函数,中断相关的操作,并包含等待函数和中断标志的处理。内容涵盖了SPI的配置、数据传输和中断管理。
摘要由CSDN通过智能技术生成

SPI的一些基础服务函数定义。

SPI有不同位宽模式,该参数由上层平台级参数进行配置。
指定SPI设备号,获取上层指定配置的位宽。
static u8 spi_get_info_mode(spi_dev spi)//获取模式
{
u8 mode = (u8) - 1;
u8 id = spi_get_info_id(spi);
switch (id) {
#if SPI0_ENABLE
case SPI0:
mode = spi0_p_data.mode;
break;
#endif
#if SPI1_ENABLE
case SPI1:
mode = spi1_p_data.mode;
break;
#endif
#if SPI2_ENABLE
case SPI2:
mode = spi2_p_data.mode;
break;
#endif
default:
break;
}
return mode;
}
根据位宽进行SPI寄存器配置、GPIO配置。

获取上层配置的主从机选择。
static u8 spi_get_info_role(spi_dev spi)//获取主从
{
u8 role = (u8) - 1;
u8 id = spi_get_info_id(spi);
switch (id) {
#if SPI0_ENABLE
case SPI0:
role = spi0_p_data.role;
break;
#endif
#if SPI1_ENABLE
case SPI1:
role = spi1_p_data.role;
break;
#endif
#if SPI2_ENABLE
case SPI2:
role = spi2_p_data.role;
break;
#endif
default:
break;
}
return role;
}

获取上层配置的时钟:
static u32 spi_get_info_clock(spi_dev spi)//获取时钟
{
u32 clock = (u8) - 1;
u8 id = spi_get_info_id(spi);
switch (id) {
#if SPI0_ENABLE
case SPI0:
cloc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值