Jump to content


  • Content count

  • Joined

  • Last visited

  1. MSP430FR5994 LEA FFT

    Hi all, Question about the results of msp_cmplx_fft_auto_q15. I use TI's DSPLibrary and can't seem to make sense of the results of the msp_cmplx_fft_auto_q15, which invokes LEA on MSPFR5994. Specifically, if I specify: static DSPLIB_DATA(src1, MSP_ALIGN_CMPLX_FFT_Q15(SAMPLES)) unsigned int src1[SAMPLES * 2]; static msp_fft_q15_params params = {.length = SAMPLES}; static msp_status status; ... uint16_t shift = 0; for(unsigned int i = 0; i < SAMPLES * CMPLX_INCREMENT; i += CMPLX_INCREMENT) { CMPLX_REAL(&src1[i]) = 1; CMPLX_IMAG(&src1[i]) = 0; } status = msp_cmplx_fft_auto_q15(&params, src1, &shift); I don't get the result I expect. Instead of: Real: 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 Imag: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 I get: Real: 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 0 Imag: 0, -7, -3, -3, -1, -1, -1, -1, 0, 1, 1, 1, 1, 3, 3, 7 and shift = 0 I gather it could be a couple of things. 1) I need to input a twiddle table 2) LEA just doesn't get the integer datatype and needs something else 3) The results need to be scaled or interpreted in a different way Any help would be greatly appreciated.
  2. DMA Block Transfer transfers single word

    Please disregard, I figured out the answer. Turns out a different interrupt system was messing with the DMAs. Sometimes in can be difficult reasoning about the ordering of interrupts. Thanks.
  3. My Setup: Using a MSP430FR5994 device connected over USB to MSPDebug interface. Implemented DMA transfers using TI's interface found in the driverlib source. Two questions: 1. Is DMA disabled when I am connected to MSPDebug? If so why can I see single transfers between memory locations. 2. When I try to do a block transfer I only see a single word being transferred. Thoughts on why that would be? Here is some code. DMA_disableTransferDuringReadModifyWrite(); dma0Config.channelSelect = DMA_CHANNEL_1; dma0Config.transferModeSelect = DMA_TRANSFER_BLOCK; // CONFIG_SAMPLE_SIZE = 32 dma0Config.transferSize = CONFIG_SAMPLE_SIZE; dma0Config.transferUnitSelect = DMA_SIZE_SRCWORD_DSTWORD; volatile unsigned int a[CONFIG_SAMPLE_SIZE] = {0}; DMA_init(&dma0Config); DMA_setSrcAddress(DMA_CHANNEL_1, (uint32_t) (input), DMA_DIRECTION_UNCHANGED); DMA_setDstAddress(DMA_CHANNEL_1, (uint32_t) (a), DMA_DIRECTION_UNCHANGED); DMA_enableInterrupt(DMA_CHANNEL_1); DMA_enableTransfers(DMA_CHANNEL_1); DMA_startTransfer(DMA_CHANNEL_1); Any help would be greatly appreciated. Thanks.
  4. SRAM decay and reset

    Hi all, I have a potentially odd question. I am using and MSP430FR5994 board and would like to measure SRAM decay. However, whenever I toggle the system from on to off and then on again the locations in SRAM that I am reading are full of random of values. While I would expect random values, I would not expect them at the timescales that I have the system off. The system is off for no more than 10ms. According to https://spqr.eecs.umich.edu/papers/rahmati-usenix12.pdf that should be short enough where I get very little decay. I should also specify that the random values seem to be consistent across runs; what I mean is they don't really seem random at all since the values appear each time. Some Questions: 1. Could this have something to with my SRAM controller settings? I do not set anything in this regard. 2. Could this have something to do with the way I am powering the board? Probably out of the scope of this forum, but I do have a capacitor, so even though I say "turn off," the voltage supplied to the board usually does not reach zero. Cheers!