主题中讨论的其他器件:MSP430FR2355
我尝试一次使用具有 STE 的 SPI 从器件发送4元件缓冲器的内容
低电平有效和 DMA。
假设缓冲区内容为:buff ={30、31、32、33}。 这只是为了进行详细说明、否则缓冲器在一个定时器 ISR 中每250ms 更新一次。
行为:
当连续运行时、示波器在所有4个事务上显示30。
运行到 curser 时:
点击1:30 30 30 30
点击2:31 31 31 31
点击3:32 32 32 32
点击4:33 33 33 33 33
点击5:30 30 30 30
(笑声) 等等
而我希望每个周期的情况都是这样:30 31 32 33
以下是应实现此目的的代码部分:
void main (void) { SPI_Init(); dma_init (); while (1) { 缓冲区={30、31、32、33}; DMA0CTL |= DMAEN + DMAREQ; } void SPI_Init (void) { //为 UCA1设置 SPI 模式 UCA1CTLW0 = UCMSB + UCSYNC + UCMODE1 + UCSWRST; //打开 SPI UCA1CTLW0 &=~UCSWRST; void = DMAC0TMA17;}DMAC0 (void) //通道0上的触发器17对应于 UCA1TX /*DMA 通道0源地址*/ DMA0SA =(无符号短整型) TempBuff1; // src = RAM 存储器 /*DMA 通道0目的地址*/ DMA0DA =(无符号短整型)&UCA1TXBUF; //最小单个地址 /*DMA 通道0传输块大小*/ DMA0SZ = 0x04; //块大小 /*DMA 通道0源地址增量1 */*/ *传输采用重复单字节*/ */*传输按字节*/ *DMA 通道0 INT 禁用 */ *DMA 通道0被禁用 // DMA0CTL = DMADD_4 + DMASRCINCR_3 + DMASBDB + DMALEVEL;// inc src、enable、byte access }