1

回答

就是用MSP432P401R的DMA乒乓模式怎么连续传输ADC采集的数据。下面是程序,不能实现功能,有些错误,请大神指教。#include "u_dma.h"#include <ti/devices/msp432p4xx/driverlib/driverlib.h>#include "uart_calc.h"#include "ADC.h"#define   DAM_SIZE    8000/@@* DMA Control Table  这一段是必须要有的*/#if defined(__TI_COMPILER_VERSION__)#pragma DATA_ALIGN(controlTable 1024)#elif defined(__IAR_SYSTEMS_ICC__)#pragma data_alignment=1024#elif defined(__GNUC__)__attribute__ ((aligned (1024)))#elif defined(__CC_ARM)__align(1024)#endifuint8_t controlTable[1024];volatile int switch_data = 0;uint32_t k=0;uint8_t data_array1[DAM_SIZE];extern void delay(uint16_t z);void DMA_confing(void){    MAP_WDT_A_holdTimer();       //关闭看门狗   memset(data_array1 0x11 DAM_SIZE);     //目标数组初始化 // printf("123\n");   GPIO_setAsOutputPin(GPIO_PORT_P1GPIO_PIN0);   GPIO_setAsOutputPin(GPIO_PORT_P2GPIO_PIN1);   GPIO_setOutputHighOnPin(GPIO_PORT_P1GPIO_PIN0);   DMA_enableModule();              //使能DMA模块   DMA_setControlbase(controlTable);      //设置控制表基地址   DMA_disableChannelAttribute(DMA_CH7_ADC14                                 UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |                                 UDMA_ATTR_HIGH_PRIORITY |                                 UDMA_ATTR_REQMASK);         //禁用通道特征   DMA_setChannelControl(UDMA_PRI_SELECT | DMA_CH7_ADC14UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_1);     //设置通道控制参数   ADC映射          主数据结构       8位数据大小    源地址增量        目标地址增量      传输数量   DMA_setChannelTransfer(UDMA_PRI_SELECT | DMA_CH7_ADC14UDMA_MODE_PINGPONG (void*) &ADC14->MEM[0]data_array1 DAM_SIZE);       //设置通道传输参数      ADC映射        主数据结构         乒乓模式        源数据                  目标数据    传输数量      DMA_setChannelControl(UDMA_ALT_SELECT | DMA_CH7_ADC14UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_1);     //设置通道控制参数   ADC映射          主数据结构       8位数据大小    源地址增量        目标地址增量      传输数量      DMA_setChannelTransfer(UDMA_ALT_SELECT | DMA_CH7_ADC14UDMA_MODE_PINGPONG (void*) &ADC14->MEM[0]data_array1 DAM_SIZE);     //设置通道传输参数      ADC映射        主数据结构         乒乓模式        源数据                  目标数据    传输数量 DMA_requestChannel(7);      //通道7请求传输 DMA_assignChannel(DMA_CH7_ADC14);    //指定外设映射 DMA_assignInterrupt(DMA_INT1 7);    Interrupt_enableInterrupt(INT_DMA_INT1);    DMA_clearInterruptFlag(7);    Interrupt_enableMaster(); DMA_enableChannel(7);    ADC14_enableConversion(); }  /@@***DMA传输完成中断*****/void DMA_INT1_IRQHandler(void){   GPIO_setOutputHighOnPin(GPIO_PORT_P2GPIO_PIN1);     //GPIO_toggleOutputOnPin(GPIO_PORT_P2GPIO_PIN1);     //delay(100);     //GPIO_toggleOutputOnPin(GPIO_PORT_P2GPIO_PIN1);   DMA_requestChannel(7);      //通道7请求传输 DMA_assignChannel(DMA_CH7_ADC14);    //指定外设映射 DMA_assignInterrupt(DMA_INT1 7);    Interrupt_enableInterrupt(INT_DMA_INT1);    DMA_clearInterruptFlag(7);    Interrupt_enableMaster(); DMA_enableChannel(7);    ADC14_enableConversion();   printf("%d%d%d\n"data_array1[k++]data_array1[k++]data_array1[k++]);     //GPIO_setOutputLowOnPin(GPIO_PORT_P2GPIO_PIN1);    /@@* Switch between primary and alternate bufferes with DMA's PingPong mode */     if (DMA_getChannelAttribute(7) & UDMA_ATTR_ALTSELECT)    {        DMA_setChannelControl(UDMA_PRI_SELECT | DMA_CH7_ADC14            UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_1);        DMA_setChannelTransfer(UDMA_PRI_SELECT | DMA_CH7_ADC14            UDMA_MODE_PINGPONG (void*) &ADC14->MEM[0]            data_array1 DAM_SIZE);        switch_data = 1; printf("%d%d%d\n"data_array1[k++]data_array1[k++]data_array1[k++]); DMA_requestSoftwareTransfer(0);    }    else    {        DMA_setChannelControl(UDMA_ALT_SELECT | DMA_CH7_ADC14            UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_1);        DMA_setChannelTransfer(UDMA_ALT_SELECT | DMA_CH7_ADC14            UDMA_MODE_PINGPONG (void*) &ADC14->MEM[0]            data_array1 DAM_SIZE);        switch_data = 0; printf("%d%d%d\n"data_array1[k++]data_array1[k++]data_array1[k++]); DMA_requestSoftwareTransfer(0);    } }​

40d0dae3c436b31a 2020-10-07 阅读:28

2

回答

msp430定时器A有7种输出模式可产生不同的PWM信号,我想问一下这个输出模式6,和7有啥不一样,或者说他们在手册上给的波形图是一样的,是不是表示他两只能产生一样的PWM信号。

c358c7247f126f88 2020-07-06 阅读:107

3

回答

智能卡读卡设备晶振大多运用在什么产品上面

6bc9ab450e050a5f 2020-05-27 阅读:142

1

回答

二总线技术为什么下行采用电压信号,上午采用电流信号?是什么传输的

01e11ddfc1af0714 2020-05-15 阅读:205

3

回答

MSP430的ADC可以支持几个通道转换

alexyq 2020-03-15 阅读:158

4

回答

MSP430内部一共有几个ADC外设

alexyq 2020-03-09 阅读:190

7

回答

msp430是咋样实现复位功能的?

b7428d82d46f4d2c 2019-12-02 阅读:317

1

回答

最近想通过Multisim反正一些瞬态的波形如RC复位电路,哪位大神可以指点一下,我入门。谢谢

有花堪折 2019-11-14 阅读:272

0

回答

TI运动手表ez430chronos套件的编程器找不到了,想玩玩手表(CC430),可以用哪个开发板上的编程器替代,手里有MSP430G2,CC3200,FR3XX

DLGG创客DIY 2019-08-30 阅读:480

1

回答

最近想玩玩大气压传感器,想起手上还有TI的Chronos手表套件,上边有个大气压传感器,但是CCS开发环境不好用,求推荐类似arduino那样的,简单粗暴无脑的开发环境,当然得带ez430-Chronos库函数的,energia好像不支持CC430吧?​​

DLGG创客DIY 2019-08-22 阅读:493

2

回答

总是显示串口不存在,请问各位大佬有没有遇到过这种情况,江湖救急如果有其他方法下载的也行

4c248e9b6bbeb722 2019-05-25 阅读:653

1

回答

(1)MSP430单片机系列,有4种型号。两款Flash系列,两款铁电FRAM系列。~MSP-EXP430F5529LP~MSP-EXP430G2ET~MSP-EXP430FR5994~MSP-EXP430FR6989(2)ARM系列处理器,有3款。ARM Cortex M4F内核,带浮点运算单元。~MSP-EXP432P401R~MSP-EXP432E401Y~EK-TM4C123GXL(3)DSP有两款,都是C2000系列。~LAUNCHXL-F28027F~LAUNCHXL-F28069M

ce4c4061e82c2fde 2019-05-24 阅读:558

0

回答

之前使用P1.4到P1.7作为数据输出到LCD我已经成功但是通过改变引脚即P1.2到P1.5作为我的数据输出引脚到LCD,它就不起作用了。这是什么问题,谢谢,下面是我的代码。#define CMD 0#define DATA 1#define LCD_OUT P1OUT#define LCD_DIR P1DIR#define D4 BIT4#define D5 BIT5#define D6 BIT6#define D7 BIT7#define RS BIT2#define EN BIT3// Delay function for producing delay in 0.1 ms incrementsvoid delay(uint8_t t){uint8_t i;for(i=t; i > 0; i--)__delay_cycles(100);}// Function to pulse EN pin after data is writtenvoid pulseEN(void){LCD_OUT |= EN;delay(1);LCD_OUT &= ~EN;delay(1);}//Function to write data/command to LCDvoid lcd_write(uint8_t value uint8_t mode){if(mode == CMD)LCD_OUT &= ~RS; // Set RS -> LOW for Command modeelseLCD_OUT |= RS; // Set RS -> HIGH for Data modeLCD_OUT = ((LCD_OUT & 0x0F) | (value & 0xF0)); // Write high nibble firstpulseEN();delay(1);LCD_OUT = ((LCD_OUT & 0x0F) | ((value << 4) & 0xF0)); // Write low nibble nextpulseEN();delay(1);}// Function to print a string on LCDvoid lcd_print(char *s){while(*s){lcd_write(*s DATA);s++;}}// Function to move cursor to desired position on LCDvoid lcd_setCursor(uint8_t row uint8_t col){const uint8_t row_offsets[] = { 0x00 0x40};lcd_write(0x80 | (col + row_offsets[row]) CMD);delay(1);}// Initialize LCDvoid lcd_init(){//P2SEL &= ~(BIT6+BIT7);LCD_DIR |= (D4+D5+D6+D7+RS+EN);LCD_OUT &= ~(D4+D5+D6+D7+RS+EN);delay(150); // Wait for power up ( 15ms )lcd_write(0x33 CMD); // Initialization Sequence 1delay(50); // Wait ( 4.1 ms )lcd_write(0x32 CMD); // Initialization Sequence 2delay(1); // Wait ( 100 us )// All subsequent commands take 40 us to execute except clear & cursor return (1.64 ms)lcd_write(0x28 CMD); // 4 bit mode 2 linedelay(1);lcd_write(0x0F CMD); // Display ON Cursor ON blink ONdelay(1);lcd_write(0x01 CMD); // Clear screendelay(20);lcd_write(0x06 CMD); // Auto Increment Cursordelay(1);lcd_setCursor(00); // Goto Row 1 Column 1}void main(void){WDTCTL = WDTPW + WDTHOLD; // stop watchdoglcd_init();lcd_setCursor(05);lcd_print("hello");// lcd_setCursor(15);//lcd_print("lcd");lcd_setCursor(00);while(1);}​

cd422c4e1abf4d5a 2019-05-22 阅读:593

7

回答

MSP430F5438最多可以做到几个UART口通信

kbqSign 2019-04-25 阅读:660

3

回答
tm4c123g单片机 MSP430单片机

tm4c123g单片机是用什么软件烧录程序的,编程的软件是什么

c3a385def9d395ec 2019-03-31 阅读:849

5

回答

有什么办法能查找原因吗

alexyq 2019-03-25 阅读:657

1

回答

MSP430的中断唤醒模式有哪些唤醒源

渐臻佳境 2019-03-23 阅读:632

8

回答

为什么会出现这种情况

hotset 2019-03-18 阅读:599

9

回答

停机模式的功耗大约是多少

ASMDA 2019-03-18 阅读:603

6

回答

用c语言编写arduino虚拟串口的驱动程序

3054308fe38f48cd 2019-03-08 阅读:906
  • 帮助人数
  • 0
  • 获得赞数
  • 0
  • 一周积分
  • 0

每日任务

提问一次
100IC币
回答一次
30IC币

问题达人换一批

本月问答IC币兑换

排名
用户名
问答积分
可兑换IC币
1
1140
30000
2
1098
30000
3
1098
30000
4
500
10000
5
370
8000
6
302
8000
7
262
6000
8
242
6000
9
180
4000
10
132
4000
11
108
4000
12
106
4000
13
106
4000
14
92
2000
15
86
2000
16
82
2000
17
74
2000
18
66
2000
19
64
2000
20
56
2000
22
48
1000
23
34
1000
24
32
1000
25
30
1000
26
24
0
27
20
0
28
20
0
29
20
0
30
20
0
< 123 >