I am a bit confused about the proper way to set up and use a pin as GPIO in input mode, so that it can be read by the ARM.
First, what is the exact meaning and difference between using DIO_MODE_GPIO_IN_0 and DIO_MODE_GPIO_IN_1 and DIO_MODE_INPUT? It seems like DIO_MODE_GPIO_IN_* are effectively equivalent, so why are there two ways to do the same thing?
All the sample code seems to use DIO_MODE_GPIO_IN_0 for configuring the EVB push button, which makes sense, while I find no use of DIO_MODE_GPIO_IN_1.
Similarly, DIO_MODE_INPUT seems to be used when the pin is intended to be an input connected to one of the external digital interfaces and others like ADC, NMI, etc. (one exception being PCM serial in on line 166 of
rsl10_sys_pcm.h, which is possibly a mistake?). However, it is also used to configure the RECOVERY_DIO pin, which I would have assumed should use DIO_MODE_GPIO_IN_*.
Also, why do
Sys_GPIO_Set_*() functions modify the
DIO->CFG[pin] register instead of writing the DIO_DATA register, which seems more obvious (e.g.,
DIO_DATA->ALIAS[pin] = 1, DIO_DATA->ALIAS[pin] ^= 1)?
What am I missing here? I have found this section of the Hardware Reference to be difficult to grock, and it could be greatly improved with a few simple diagrams showing the pad configuration and mux’ing options.