SLAZ299AD October   2012  – August 2021 MSP430F5508

 

  1.   1
  2.   2
  3.   3
  4.   4
  5.   5
    1.     6
    2.     7
      1.      8
      2.      9
      3.      10
      4.      11
    3.     12
  6.   13
    1.     14
    2.     15
    3.     16
    4.     17
    5.     18
    6.     19
    7.     20
    8.     21
    9.     22
    10.     23
    11.     24
    12.     25
    13.     26
    14.     27
    15.     28
    16.     29
    17.     30
    18.     31
    19.     32
    20.     33
    21.     34
    22.     35
    23.     36
    24.     37
    25.     38
    26.     39
    27.     40
    28.     41
    29.     42
    30.     43
    31.     44
    32.     45
    33.     46
    34.     47
    35.     48
    36.     49
    37.     50
    38.     51
    39.     52
    40.     53
    41.     54
    42.     55
    43.     56
    44.     57
    45.     58
    46.     59
    47.     60
    48.     61
    49.     62
    50.     63
    51.     64
    52.     65
    53.     66
    54.     67
    55.     68
    56.     69
    57.     70
    58.     71
    59.     72
    60.     73
    61.     74
    62.     75
    63.     76
    64.     77
    65.     78
    66.     79
    67.     80
  7.   81

SYS18

USB Module

Category

Functional

Function

USB registers are unlocked and ACCVIFG is set at start-up

Description

During device start-up, an incorrect line of code in the start-up code causes the USB registers to remain unlocked and causes an access violation, setting ACCVIFG bit.
In the  BSL430_Low_Level_Init code, the following line of code accesses USBKEY (incorrect register address) instead of USBKEYPID, causing an access violation setting ACCVIFG bit, and leaving the USB registers unlocked.
mov.w   #0x0000,   &USBKEY     ; lock USB

The correct line of code should read:
mov.w   #0x0000,   &USBKEYPID     ; lock USB correctly

Note: This code does not run when using the JTAG debugger - the behavior only appears when running standalone.

Workaround

1. Load the latest version of the USB BSL from Custom BSL Download

OR

2. Load a non-USB or custom BSL

OR

3. Erase the BSL

OR

4. Clear the access violation flag at the beginning of the application code with the following C code (or its assembly equivalent):


USBKEYPID = 0;       // Lock USB correctly
FCTL3 = 0xA558;      // Clear violation flag