关于tresos Studio(EB)的MCAL配置之DIO

配置

General

874cda84af714524a743af99ce21e344.png

Dio Development Error Detect开发者错误检测

Dio Flip Channel Api翻转通道电平接口Dio_FlipChannel是否启用

Dio Version Info Api决定Dio_GetVersionInfo接口是否启用,一般打开就行。

Dio Reverse Port Bits让端口的位(通道)进行翻转,这个操作很奇特,如果将3写进去失能就会作用于14和15通道,如果写进去使能使能就会作用于0和1通道。因为使用的时候不太符合大多数人的习惯一般不勾选。

Dio Masked Write Port Api接口Dio_MaskedWritePort使能,通过掩码控制通道里面的pin的电平

Dio Read Zero For Undefined Port Pins启用Dio_ReadPort接口将未定义的端口通道读取为0

DioConfig

一般只需要一个容器即可,里面根据Port来分组,每个组右边是自己编写的序号。

2759b8dfb84846be9146a8fb403970fd.png

在任意一组PORT里面能看到里面有使用为GPIO的PIN,官方的叫法是DIO独立通道,右边的ID是PIN在这一组里面的ID。默认电平,输入输出方式的配置在port模块。在这里建议个习惯,在这里起名字的时候,除了功能名称,最好可以加上端口和PIN名字,这样出了硬件问题也好排查。

ab48612c2c7d45a3b02ca3f57d969be5.png

DioChannelGroup

在同一个PORT里面一个或者多个相邻PIN组成的通道组,offset是起始通道,mask掩码对应连续的几个通道。

92fb072c849d420782735eb01429247a.png

静态代码

Dio_FlipChannel翻转DIO输出PIN电平,其实就是调用Dio_SIUL_FlipChannel接口读出SIUL_GPDO寄存器的值,解析出当前PIN电平,对控制电平的位翻转之后再写回去。

Dio_GetVersionInfo获取版本信息,需要传入一个Port_GetVersionInfo类型的结构体指针,接口会把版本信息赋值到传入的结构体里面。

Dio_Init初始化的时候需要调用,入参是Dio_ConfigType类型的结构体指针,接口会把入参的结构体或者Dio_ConfigPC结构体里面的内容赋值给全局结构体Dio_CurrentConfigPtr,但是这个Dio_ConfigPC结构体全是0,全局结构体Dio_CurrentConfigPtr也在其他地方没用上,相当于啥也没干,所以你发现初始化的时候其实不调用这个接口也是可以的,并且规范里面DIO所有操作接口都没有对是否初始化进行检查。

Dio_ReadChannel读取DIO通道的值,实际上就是调用Dio_SIUL_ReadChannel接口,读取SIUL_MSCR接口判断该引脚配置的方向是输入还是输出。如果是输入,就从SIUL_GPDI寄存器里面读取。如果是输出,就从SIUL_GPDO寄存器里面读取。

Dio_ReadChannelGroup读取DIO的PIN组的值,这里的入参是生成的动态代码里面PIN组的结构体名称取地址。实际上是调用Dio_SIUL_ReadChannelGroup接口读取对应每个PIN口SIUL_PGPDI寄存器的数值,并且以掩码的方式返回回去。

Dio_ReadPort读取一整个PORT里面所有PIN的值,其实就是调用Dio_SIUL_ReadPort接口读取对应每个PIN口SIUL_PGPDI寄存器的数值,并且以掩码的方式返回回去。

Dio_WriteChannel写入DIO输出通道的值,其实就是调用Dio_SIUL_WriteChannel接口设置SIUL_GPDO寄存器。

Dio_WriteChannelGroup写入DIO通道组的值,其实就是调用SIUL_MPGPDO接口根据掩码设置每个PIN口SIUL_GPDO寄存器的数值。

Dio_WritePort写入一整个PORT里面所有PIN口的值,这里的入参是生成的动态代码里面PIN组的结构体名称取地址和需要设置的对应掩码。其实就是调用SIUL_MPGPDO接口根据掩码设置每个PIN口SIUL_GPDO寄存器的数值。

Dio_MaskedWritePort根据掩码写入单个PORT里面指定的一个或者多个PIN的电平,其实就是调用Dio_SIUL_MaskedWritePort接口根据掩码设置每个PIN口SIUL_GPDO寄存器的数值。

动态代码

Dio_ChannelType类型定义的通道ID,高8位为PORT的ID,低8位为通道在PORT的ID。

undefined_portmask里面没有定义的通道为0

Dio_ChannelGroupType是同一个PORT里面一个或者多个相邻PIN组成的通道组结构体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值