DIO
JN516x单片机有20DIO引脚,分别为DIO0-DIO19,每个IO引脚可以设置为输出或者输入模式,当然它们也作为复用引脚,例如ADC、UARTs、Timers、SI、SPI,PWM,RF、COMP等
- 设置IO输入输出方式,函数原型如下
PUBLIC void vAHI_DioSetDirection(
uint32 u32Inputs,
uint32 u32Outputs);
示例:假如你想设置GIO11引脚为输出模式
#define DIO11_MAC (1<<11)
vAHI_DioSetDirection(0, DIO11_MAC );
- DIO输出模式下,电平设置,函数原型如下
PUBLIC void vAHI_DioSetOutput(
uint32 u32On,
uint32 u32Off);
示例:假如你想设置GIO11引脚为输出模式下为高电平
#define DIO11_MAC (1<<11)
vAHI_DioSetDirection(0, DIO11_MAC );、
vAHI_DioSetOutput(DIO11_MAC ,0)
- 设置DIO上拉模式
在JN5169中,每个DIO都有一个相关联的上拉电阻。“上拉”的目的是在没有外部负载连接到DIO时,防止引脚的状态“浮动”
-也就是说,当启用时,在没有外部负载(或存在弱外部负载)的情况下,上拉将销连接到高(on)状态。可以使用函数vAHI_DioSetPullup()启用/禁用所有DIOs的上拉-默认情况下,所有的上拉都是启用的。同样,如果在调用vAHI_DioSetPullup()时,片内外设正在使用共享DIO,那么除了连接到外部32kHz晶体外,还将应用指定的DIO上拉设置
注释:DIO上拉设置是通过睡眠来维持的。如果不需要,可以通过禁用DIO上拉(在睡眠或正常操作期间)来节省电能。
PUBLIC void vAHI_DioSetPullup(
uint32 u32On,
uint32 u32Off);
示例:假如你想设置GIO10引脚为输入上拉模式
vAHI_DioSetDirection((1<<10), 0);
vAHI_DioSetPullup((1<<10), 0);
-
读取DIOs状态
可以使用u32AHI_DioReadInput()函数获得DIOs的状态。这个函数将返回所有DIOs的状态,不管它们是被配置为输入或输出,还是被外围设备使用。
一组连续的8个DIOs可以用来并行地输入一个字节——set DIO0-7或DIO8-15可以用于此目的,其中0或8位用于字节中最不重要的位。可以使用u8AHI_DioReadByte()函数获得DIO集合上的输入字节。集合中的所有DIOs必须预先配置为输入。 -
DIO中断和唤醒
配置为输入的DIOs可用于生成系统控制器中断。如果微控制器在睡觉,这些中断可以用来唤醒它。集成的外围设备API包括一组“DIO中断”函数和一组“DIO唤醒”函数,但是这些函数的效果是相同的(因为它们访问硬件中的相同寄存器位)。下面的小节将描述这两个函数集的用法。
注意:由于’ DIO interrupt ‘和’ DIO wake '函数访问相同的JN516x寄存器位,您必须确保这两组函数在应用程序代码中没有冲突。
/* Set the edge detection for falling edges */
vAHI_DioWakeEdge(0, (1<<10));
/* Enable interrupts to occur on selected edge */
vAHI_DioWakeEnable((1<<10), 0);
- 配置数据输出
JN516x设备有两个引脚,DO0和DO1,可以在设备处于唤醒状态时用作通用数字输出。DO引脚共享作为SPI主控器、定时器2和定时器
这些引脚可以配置如下:
bAHI_DoEnableOutputs() 可以 用来 使 (or disable) DO 别针 作为 通用 的 数字 输出 —— default, DO 别针 被 禁用 的 通用 数字 输出 升高。
vAHI_DoSetDataOut()可用于将DO引脚的输出状态设置为on或off(以任何组合的形式)——默认情况下,在开机时输出状态为on。
vAHI_DoSetPullup()可用于在任何组合中将DO引脚的上拉状态设置为on或off——默认情况下,上拉在上电时启用。
DO引脚不能通过睡眠来保持其状态,也不能用于将设备从睡眠中唤醒。从复位,在睡眠期间和从睡眠中醒来,做大头针恢复为禁用的通用输出与上拉启用