msp430f5529: Enable clocks/PLL for msp_exp430f5529lp and enable USB

module in dcd_msp430x5xx; device does not enumerate.
This commit is contained in:
William D. Jones 2019-09-23 18:53:31 -04:00
parent 907bc3df9b
commit a6a79df9fb
2 changed files with 37 additions and 1 deletions

View File

@ -36,6 +36,8 @@
#define BUTTON_PIN BIT1
#define BUTTON_STATE_ACTIVE 1
uint32_t cnt = 0;
static void SystemClock_Config(void)
{
WDTCTL = WDTPW + WDTHOLD; // Disable watchdog.
@ -86,16 +88,45 @@ static void SystemClock_Config(void)
TA0CCTL0 |= CCIE;
TA0CCR0 = 999; // 1000 ticks.
TA0CTL |= TASSEL_2 + ID_3 + MC__UP; // Use SMCLK, divide by 8, start timer.
// Initialize USB power and PLL.
USBKEYPID = USBKEY;
// VUSB enabled automatically.
// Wait two milliseconds to stabilize, per manual recommendation.
uint32_t ms_elapsed = board_millis();
do
{
while((board_millis() - ms_elapsed) < 2);
}while(!(USBPWRCTL & USBBGVBV));
// USB uses XT2 (4 MHz) directly. Enable the PLL.
USBPLLDIVB |= USBPLL_SETCLK_4_0;
USBPLLCTL |= (UPFDEN | UPLLEN);
// Wait until PLL locks. Check every 2ms, per manual.
ms_elapsed = board_millis();
do
{
USBPLLIR &= ~USBOOLIFG;
while((board_millis() - ms_elapsed) < 2);
}while(USBPLLIR & USBOOLIFG);
USBKEYPID = 0;
}
void board_init(void)
{
SystemClock_Config();
__bis_SR_register(GIE); // Enable interrupts.
SystemClock_Config();
P1DIR |= LED_PIN; // LED output.
P1REN |= BUTTON_PIN; // Internal resistor enable.
P1OUT |= BUTTON_PIN; // Pullup.
USBKEYPID = USBKEY;
USBPHYCTL |= PUSEL; // Convert USB D+/D- pins to USB functionality.
USBKEYPID = 0;
}
//--------------------------------------------------------------------+

View File

@ -43,6 +43,11 @@
void dcd_init (uint8_t rhport)
{
(void) rhport;
// Enable the module!
USBKEYPID = USBKEY;
USBCNF |= (PUR_EN | USB_EN);
USBKEYPID = 0;
}
void dcd_int_enable (uint8_t rhport)