Other Parts Discussed in Thread: MSP430F5326
Hello,
I am using DMA block transfer to transfer a block of data via SPI interface on MSP430F5326. I initialize DMA transfer as follows:
unsigned char master_packet[SIZE]; ... // fill master_packet with nonzero data ... DMA2CTL &= ~DMAEN; DMACTL1 = DMA2TSEL4 + DMA2TSEL1 + DMA2TSEL0; DMA2CTL |= DMADT0 + DMASRCINCR1 + DMASRCINCR0 + DMADSTBYTE + DMASRCBYTE + DMAIE; DMA2SA = master_packet; DMA2DA = &UCB0TXBUF; DMA2SZ = SIZE; ... // trigger transfer DMA2CTL |= DMAEN; UCB0IFG &= ~UCTXIFG; UCB0IFG |= UCTXIFG;
The problem is that when I use a scope to verify the data coming from SPI, every other byte is dropped for some reason! If I initialize the master_packet as follows:
master_packet[0] = 0x92; master_packet[1] = 0x42; master_packet[2] = 0xF0; master_packet[3] = 0x66;
Only the bytes 0x42 and 0x66 are actually transmitted...I made sure that DMASRCBYTE and DMADSTBYTE were set so that the DMA would treat the memory as bytes instead of words... what am I missing?