This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello,
I am using the mentioned controlCARD for my application for which I have designed my own Docking Station. In this docking station I use a switch connected to the pin 33 of the DIMM100 connector to use it as an input peripheral. If the controlCARD is not connected, the switch works fine, with a value close to 0 V when in the OFF position and close to 3 V when if in the ON position.
The problem comes when I plug the controlCARD in the DIMM100 connector, because then the value, when it is in OFF position, becomes 2.5 V. I have 4 more switches using GPIO11,13,30 and 31 and all of them work perfectly, so I decided to test the controlCARD itself because in the schematics I do not see any connection between the PB4_GPIO12 and anything else but the DIMM100 connector.
If I power the controlCARD with the microUSB connector at the top of the board and measure the voltage of pin 33 (GPIO12) of the DIMM100 connector and pin 8 (GND) the voltage is again 2.5 V, and if I check the resistance (without powering the board) between the pin 33 and ground and pin 33 and this 5 V point both result in approximately 2 KOhm.
I do not think it is a software problem because it does not happen with other GPIOs, but just in case I include my M3 code, which is written to the flash memory:
#include "inc/hw_sysctl.h" #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_nvic.h" #include "inc/hw_types.h" #include "inc/hw_gpio.h" #include "driverlib/ipc.h" #include "driverlib/sysctl.h" #include "driverlib/interrupt.h" #include "driverlib/debug.h" #include "driverlib/cpu.c" #include "driverlib/gpio.h" void main(void) { volatile int i = 0; // Allow writes to protected registers. HWREG(SYSCTL_MWRALLOW) = 0xA5A5A5A5; // Sets up PLL, M3 running at 75MHz and C28 running at 150MHz SysCtlClockConfigSet(SYSCTL_USE_PLL | (SYSCTL_SPLLIMULT_M & 0xF) | SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 | SYSCTL_XCLKDIV_4); // Enable all GPIOs SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); // Unlock the register to change the commit register value for Port B Pin 7 // This disables the NMI functionality on the pin and allows other muxing options to be used HWREG(GPIO_PORTB_BASE+GPIO_O_LOCK) = GPIO_LOCK_KEY_DD; // Write to commit register HWREG(GPIO_PORTB_BASE+GPIO_O_CR) |= 0x000000FF; // Delay for (i=0;i<20;i++){}; // Enable Pull-ups on EPWM(1-8)A/B capable pins GPIOPadConfigSet(GPIO_PORTA_BASE, 0xFF, GPIO_PIN_TYPE_STD_WPU); GPIOPadConfigSet(GPIO_PORTB_BASE, 0x00, GPIO_PIN_TYPE_STD_WPU); GPIOPadConfigSet(GPIO_PORTD_BASE, 0xB9, GPIO_PIN_TYPE_STD_WPU); GPIOPadConfigSet(GPIO_PORTE_BASE, 0x00, GPIO_PIN_TYPE_STD_WPU); // Give C28 control of all GPIOs GPIOPinConfigureCoreSelect(GPIO_PORTA_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTB_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTC_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTD_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTE_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTF_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTG_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTH_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); GPIOPinConfigureCoreSelect(GPIO_PORTJ_BASE, 0xFF, GPIO_PIN_C_CORE_SELECT); // Delay for (i=0;i<20;i++){}; // Disable clock supply for the watchdog modules SysCtlPeripheralDisable(SYSCTL_PERIPH_WDOG1); SysCtlPeripheralDisable(SYSCTL_PERIPH_WDOG0); // Enable processor interrupts IntMasterEnable(); #ifdef _STANDALONE #ifdef _FLASH // Send boot command to allow the C28 application to begin execution IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH); #else // Send boot command to allow the C28 application to begin execution IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_RAM); #endif #endif // Main Code while(1); }
So my question is, is this a problem of my controlCARD that may be damaged or is it a general problem? Or there is something that I am doing wrong?
Thank you in advance for your help.
Pablo Armero
Pablo,
I do not believe this to be a general problem. It may be possible that your controlCARD was damaged.
I do have two thoughts:
1) I haven't taken a look at your code, but can you make sure that the pull-up is disabled on GPIO12 in your software. Perhaps the pull-up in being enabled on that GPIO and not on the others?
2) If you have the Experimenter's Kit docking station can you recreate the problem on it. This would allow you to rule out any issue on your custom baseboard.
Thank you,
Brett