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.

Is there any way to trigger DMA from UCB1?

Other Parts Discussed in Thread: MSP430F2619

I am looking at the DMACTL0 description in SLAU144, and am disappointed to see that UCB1TXIFG and UCB1RXIFG are not on the list of selectable triggers. Am I missing something?  Is there any way to trigger on those flags anyway?

The best solution I can think of at this point is triggering off of UCA1 and having UCA1 mirror everything UCB1 does using a "creative" block transfer that writes the appropriate configuration for both interfaces at the same time. This is ugly with possible unpredicatable behavior (not to mention it couldn't be any less portable) and I really don't want to do it, so I would definitely appreciate a better suggestion.

I know I could use interrupts, but I am pretty much continuously sampling an ADC and already have other timing-sensitive interrupts, so I am trying hard to avoid having more interrupts fire off all over the place.

I am using an MSP430F2619. Ideally, I would be able to just rev the board to pick whatever USCI I want, but alas, that is not possible right now, so I have to use UCB1.

Edit: The above "solution" I was thinking of takes 20 clock cycles per transcieved byte in my application when an interrupt only takes 14, so it's not any use. If no one has any better ideas, I'll just do what I need to do in the main thread and have other stuff wait...

  • Dmitriy Chenchykov said:
    UCB1TXIFG and UCB1RXIFG are not on the list of selectable triggers. Am I missing something?  Is there any way to trigger on those flags anyway?

    No. There are only 16 triggers and UCB1 is none of them.

    Dmitriy Chenchykov said:
    The best solution I can think of at this point is triggering off of UCA1 and having UCA1 mirror everything UCB1 does using a "creative" block transfer that writes the appropriate configuration for both interfaces at the same time.

    Well, if UCA1 is unused, why didn't you use UCA1 in the first place? The hardware shouldn't be made responsible for design errors of the developer. Even less for fixing them. But things like that happen. That's why you have airwires even on large commercial designs.

    Dmitriy Chenchykov said:
    I would definitely appreciate a better suggestion.

    Short the pins of UCA1 and UCB1 and use UCA1, which has a DMA trigger. (and don't use the pins of UCB1 then, of course)

    Dmitriy Chenchykov said:
    t I am pretty much continuously sampling an ADC

    And you can use DMA to copy the ADC results. well, not in all configurations.

    BTW: it is better to apply a manual fix on the PCB and write the firmware for the fixed device, than to make any workarounds in the software until next PCB revision, and then have to rewrite the firmware when the next PCB revision is there (or, worse, never rework the PCB because the software has a workaround, even if it is negatively affecting the whole operation or prohibiting future enhancements).

**Attention** This is a public forum