-
使用 DMA写flash后,读取数据出现错位现象
使用DMA写flash后,读取数据出现错位现象,读到的buffer的第一节总为0,从第二字节开始才是正常数据。只能在24bit地址发送完后,再发一个DUMMY_BYTE(无效字节),才能bufferr接收数据。一但调“dma_channel_enable(DMA1,DMA_CH3)这个使能”后就出现上述现象。每次读取数据时都要先发一个DUMMY_BYTE才能正确接收。若上电不调“dma_channel_enable(DMA1,DMA_CH3)“接收都是正常的。使用的MCU是GD32F470VIT6,SPIFLAH是GD25Q40C.请各位大佬帮忙分析下。以下为SPI代码DMA配置voiddma_init(uint8_t*data_buffer,uint32_tdata_length){dma_single_data_parameter_structdma_init_struct;rcu_periph_clock_enable(RCU_DMA1);//DMA发送dma_deinit(DMA1,DMA_CH3);//DMA初始化参数设置dma_init_struct.direction=DMA_MEMORY_TO_PERIPH;dma_init_struct.memory0_addr=(uint32_t)data_buffer;dma_init_struct.memory_inc=DMA_MEMORY_INCREASE_ENABLE;dma_init_struct.periph_addr=(uint32_t)&SPI_DATA(SPI0);dma_init_struct.periph_inc=DMA_PERIPH_INCREASE_DISABLE;dma_init_struct.periph_memory_width=DMA_MEMORY_WIDTH_8BIT;dma_init_struct.number=data_length;dma_init_struct.circular_mode=DMA_CIRCULAR_MODE_DISABLE;dma_init_struct.priority=DMA_PRIORITY_MEDIUM;dma_single_data_mode_init(DMA1,DMA_CH3,&dma_init_struct);dma_channel_subperipheral_select(DMA1,DMA_CH3,DMA_SUBPERI3);//使能DMA中断通道nvic_irq_enable(DMA1_Channel3_IRQn,0,0);//配置DMA中断使能位//dma_circulation_disable(DMA1,DMA_CH3);dma_interrupt_enable(DMA1,DMA_CH3,DMA_CHXCTL_FTFIE);}DMA发送int8_tspi_dma_data_send(uint8_t*pbuffer,uint32_twrite_addr,uint16_tnum_byte_to_write){/*enablethewriteaccesstotheflash*/spi_flash_write_enable();/*selecttheflash:chipselectlow*/SPI_FLASH_CS_LOW();/*send"writetomemory"instructi
2024-11-07 15 -
GD32F303RCT6 USART0的空闲中断进不去,仿真打断点也进不去中断
intmain(void){//¿ÉÒÔ×öµ½´«ÊäÊý¾Ý³öÀ´£¬¶¨µã´«ÊäÊý¾Ý³öÀ´uint32_tStatus2=0;uint32_tStatus3;uint16_tx;dma_parameter_structdma_init_struct2;gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP,ENABLE);//ÏÂÔØ¿ÚNJTRSTÒý½Åµ±×öÆÕͨI/O¿Úrcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);systick_config();//1mssystickgpio_config();//PA1,PA2,PA3¹Ü½ÅÅäÖÃ/************************************************///UART0_initrcu_periph_clock_enable(RCU_AF);//Need!!!!//usart_halfduplex_enable(USART0);rcu_periph_clock_enable(RCU_USART0);//ʹÄÜUSART0ʱÖÓgpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);usart_deinit(USART0);//³õʼ»¯//¸´Î»Ê±ÖÓusart_baudrate_set(USART0,19200U);//¶¨Ò岨ÌØÂÊusart_receive_config(USART0,USART_RECEIVE_ENABLE);//½ÓÊÕʹÄÜusart_transmit_config(USART0,USART_TRANSMIT_ENABLE);//·¢ËÍʹÄÜusart_interrupt_enable(USART0,USART_INT_TC);//·¢ËÍÍê³ÉÖжÏusart_interrupt_enable(USART0,USART_INT_IDLE);//¿ÕÏÐÖжÏusart_enable(USART0);//Ä£¿éʹÄÜUSART_INT_TCnvic_irq_enable(USART0_IRQn,0,1);RX0_DMAquest_StartOrInit();TX0_DMAquest_StartOrInit();usart_dma_receive_config(USART0,USART_DENR_ENABLE);usart_dma_transmit_config(USART0,USART_DENT_ENABLE);//NVICEXTI_config();//timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH0);//timer_interrupt_enable(TIMER0,TIMER_INT_CH0);//usart_dma_transmit_config(USART0,USART_DENT_ENABLE);//usart_dma_receive_config(USART0,USART_DENR_ENABLE);/******************************************************//*configureDMAmode*///dma_circulation_disable(DMA1,DMA_
2024-11-06 10 -
gd32f303cct6有源晶振无法稳定问题
gd32f303cct6使用16M有源晶振输入到OSCIN引脚后在启动时候HXTALSTB始终无法值1,然后卡死在system_gd32f30x.c文件中iffail的这个死循环里,是这款单片机不支持有源晶振吗,使用示波器测量过芯片OSCIN引脚有峰峰值为1V的16MHZ波形,并且稳定,圆角的方波
2024-10-30 13 -
gd55B01GE超出64MB读写异常
gd55B01GE在低于64MB的地址读写均正常,使用4字节模式,但地址超过64M(即0x4000000)后的地址就读写异常了,有的地址能读写出来,有的不行,是地址有保护吗,我试着解除了保护也不行,有没有大佬知道怎么回事,如何解决
2024-08-06 7 -
MM32SPIN系统高级定时器输入捕获 没办法进入TIM_CC_IRQH中断
MM32SPIN系统单片机高级定时器输入捕获没办法进入TIM_CC_IRQH中断voidRemote_1(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);//使能GPIOB时钟GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_7);//GPIOB4复用为TIM1//GPIOGPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//下拉输入GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);}voidRemote_Init(uint16_tperiod,uint8_tprescaler){TIM_TimeBaseInitTypeDefTIM_StructInit;TIM_ICInitTypeDefTIM_ICInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);TIM_TimeBaseStructInit(&TIM_StructInit);TIM_StructInit.TIM_Period=period;TIM_StructInit.TIM_Prescaler=prescaler;TIM_StructInit.TIM_ClockDivision=TIM_CKD_DIV1;TIM_StructInit.TIM_CounterMode=TIM_CounterMode_Up;TIM_StructInit.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM1,&TIM_StructInit);//TIM1输入捕获参数设置TIM_ICInitStructure.TIM_Channel=TIM_Channel_2;//CC2S=01选择输入端IC2映射到TI1上TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//上升沿捕获TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//映射到TI1上TIM_ICInitStructure.TIM_ICFilter=0x0;TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;//配置输入分频,不分频TIM_ICInit(TIM1,&TIM_ICInitStructure);TIM_ARRPreloadConfig(TIM1,ENABLE);TIM_ITConfig(TIM1,TIM_IT_CC2|TIM_IT_Update,ENABLE);TIM_CtrlPWMOutputs(TIM1,ENABLE);TIM_Cmd(TIM1,ENABLE);}voidRemote_2(void){NVIC_InitTypeDefNVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM1_BRK_UP_TRG_COM_IRQn;//定时中断3NVIC_InitStructure.NVIC_IRQChannelPriority=1;//中断优
2024-06-17 8 -
MM32G0001 PA0引脚复用USART1_RX失灵,各位有没有遇到过
如题
2024-01-13 11 -
st移植到GD32f450zgt6 CAN初始化不通过
st的程序移植到GD32f450zgt6can在初始化那里不通过主状态寄存器没有反应有人遇到过这个问题没
2023-09-18 6 -
不能删除提问吗
本帖最后由zhaoxwic于2023-3-3121:06编辑不能删除提问吗
2023-03-31 3 -
如何使用Clion对合泰HT32系列芯片进行开发?
近期开始使用HT32芯片,了解到它是ARM架构,由于近期一直使用CLion进行嵌入式开发,故决定继续使用Clion开发HT32,想了解一下有无已经使用过CLion进行合泰芯片开发的呢如果有的话,可否分享下开发经验?比如如何使用stlink进行下载,以及其config文件如何配置,谢谢!
2023-03-07 3 -
关于MM32F031 q版正常和n版不工作
使用q版配置工程文件,编译后下载到q版芯片可以正常运行;但如果下载到n版或o版,不能正常运行。查了下datasheet,里面只有最后型号命名提到q和n是指coreversion,但没提这2个版本具体区别。是否需要使用对应的启动文件:比如system_MM32F031x4x6_q.c和startup_MM32F031x4x6_q.s,需要更换,其它库文件也需要更换?目前没找到n版和o版的这方面资料。如何才能让n版和o版也能工作起来?
2023-01-09 12 -
GD的MCU内核是裁剪版本吗?
大家好,我使用GD32F150,对IO脚操作如下:while(1){GPIO_BOP(GPIOB)=GPIO_PIN_6;GPIO_TG(GPIOB)=GPIO_PIN_6;GPIO_BC(GPIOB)=GPIO_PIN_6;}单步调试发现,GPIO_BOP操作后,万用表测3.3VGPIO_BC操作后,测到0.0V。说明这两个操作没有问题,但GPIO_TG,没有变化,这个操作应该是切换输出,1应该变0,0变1。但实测没有变化,不知道GD的内核是不是裁剪了一些功能和寄存器,做了个裁剪版本?请问有哪位大侠碰到类似问题吗?
2022-11-16 18 -
芯源的CW32F030可以使用JLINK进行开发调试吗?
芯源的芯片CW32F030价格挺便宜的,看芯片手册,性能也不错,正打算试用一下,请问可以使用JLINK开发调试吗?
2022-07-14 19 -
请问哪里可以购买CW32的量产工具CW-Writer,价钱是多少?
请问哪里可以购买CW32的量产工具CW-Writer,价钱是多少?
2022-06-06 29 -
程序跑飞,不能调试是什么原因?
MCU的系统时钟从默认的8MHz改为48MHz后,程序跑飞,不能调试是什么原因?
2022-05-31 23