-
GD32F303 SPI DMA 条件下如何配置8位的CRC
如题GD32F303SPIDMA条件下如何配置8位的CRC,我的配置如下voidSpi1_init(){spi_parameter_structspi_init_struct;/*deinitilizeSPIandtheparameters*/spi_i2s_deinit(SPI1);spi_struct_para_init(&spi_init_struct);rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_SPI1);rcu_periph_clock_enable(RCU_AF);/*configureSPI1GPIO:NSS/PB12,SCK/PB13,MISO/PB14,MOSI/PB15*/gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_MAX,GPIO_PIN_13|GPIO_PIN_15);/*SPI1GPIOconfig:SCK/PB13,MOSI/PB15*/gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_MAX,GPIO_PIN_14);/*SPI1GPIOconfig:MISO/PB14*/gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_MAX,GPIO_PIN_12);/*PB12asCS*/SPI1_CS_H;spi_init_struct.trans_mode=SPI_TRANSMODE_FULLDUPLEX;spi_init_struct.device_mode=SPI_MASTER;spi_init_struct.frame_size=SPI_FRAMESIZE_8BIT;spi_init_struct.clock_polarity_phase=SPI_CK_PL_LOW_PH_1EDGE;//SPI接口逻辑在时钟极性(CPOL)=0和时钟相位(CPHA)=0的情况下运行spi_init_struct.nss=SPI_NSS_SOFT;//注意SPI_NSS_HARD是指外部的CS也就是说对从机有效主机应该使用SPI_NSS_SOFTspi_init_struct.prescale=SPI_PSC_32;spi_init_struct.endian=SPI_ENDIAN_MSB;//大端spi_init(SPI1,&spi_init_struct);/*setcrcpolynomial*/spi_crc_polynomial_set(SPI1,7);spi_crc_on(SPI1);/*enableSPI1*/spi_enable(SPI1);}我使用了,可是实际上示波器没有监测到下发的正常校验结果spi_crc_polynomial_set(SPI1,7);spi_crc_on(SPI1);发送数据填充{Afex->Spi_Txbuf[0]=Afex->Aevaddr;Afex->Spi_Txbuf[1]=0xFF;//Afex->Spi_Txbuf[2]=CRC8(Afex->Spi_Txbuf,2);AFE1_CS_L;SPI1_TransmitReceiveDma(Afex->Spi_Txbuf,Afex->Afe_Rxbuf,2);AFE1_CS_H;}//DMA数据填充和发送使能等这里用了个信号量阻塞uint8_tSPI1_TransmitReceiveDma(cons
2024-08-08 18 -
GD32F4xxDemo_Suites中的 IAR工程的.icf文件可用ST的代替吗?
GD32F4xxDemo_Suites中的IAR工程的.icf文件在哪里可以找到?可用ST的代替吗?
2024-04-26 19 -
华大HC32F030 Keil MDK工程使用J-Link RTT Viewer问题
按照网上的教程,华大HC32F030J8TA成功的使用J-LinkRTTViewe打印了数据,但是添加了UART0接收与发送功能后,KeilMDK发现程序不停地看门狗复位。但是在IAR下的工程就是正常的,请问大家有没有遇到过这样的问题,或是KeilMDK下要特殊设置?谢谢大家了。
2023-11-28 9 -
华大HC32L130J8TA,UART1+DMA功能正常,换成UART0就用不了了,什么原因?
本帖最后由breakP于2023-11-210:27编辑直接用的例程,这是UART1+DMA可以正常使用,但是换成UART0就不行了,接线,参数都检查过了int32_tmain(void){//uart端口配置App_UartPortInit();//UART模块配置App_UartCfg();//DMA参数配置App_DmaCfg();while(1){if(5==Dma_GetStat(DmaCh0))//完成一次通道传输(UART1_RX->RAM缓存2字节){Dma_DisableChannel(DmaCh0);//禁用通道0delay10us(100);Dma_EnableChannel(DmaCh1);//使能通道1Dma_ClrStat(DmaCh0);//清除通道0状态值}if(5==Dma_GetStat(DmaCh1))//完成一次通道传输(RAM缓存->UART1_TX2字节){Dma_DisableChannel(DmaCh1);//禁用通道1Dma_EnableChannel(DmaCh0);//使能通道0Dma_ClrStat(DmaCh1);//清除通道0状态值}}}//UART模块配置voidApp_UartCfg(void){stc_uart_cfg_tstcCfg;stc_uart_baud_tstcBaud;DDL_ZERO_STRUCT(stcCfg);//初始化变量DDL_ZERO_STRUCT(stcBaud);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);//使能UART1外设时钟门控开关stcCfg.enRunMode=UartMskMode1;//模式3stcCfg.enStopBit=UartMsk1bit;//1位停止位stcCfg.stcBaud.u32Baud=9600;//波特率9600stcCfg.stcBaud.enClkDiv=UartMsk8Or16Div;//通道采样分频配置stcCfg.stcBaud.u32Pclk=Sysctrl_GetPClkFreq();//获得外设时钟(PCLK)频率值Uart_Init(M0P_UART1,&stcCfg);//串口初始化Uart_ClrStatus(M0P_UART1,UartRC);//清接收请求Uart_ClrStatus(M0P_UART1,UartTC);//清发送请求Uart_EnableFunc(M0P_UART1,UartDmaTxFunc);//使能DMA发送,DMA相关通道使能后,如果TxBuff为空,会立马启动传输Uart_EnableFunc(M0P_UART1,UartDmaRxFunc);//使能DMA接收}//DMA参数配置voidApp_DmaCfg(void){stc_dma_cfg_tstcDmaCfg;DDL_ZERO_STRUCT(stcDmaCfg);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE);//使能DMAC外设时钟门控开关//rxdma配置stcDmaCfg.u32SrcAddres
2023-11-02 9 -
有没人遇到LKS05系列,掉电实验出现程序飞掉的
有没遇到反复掉电存储,实验不到一万次出现程序飞掉的。完全不能读取FLASH了,整个系统瘫痪必须强制擦除后重新写入方可工作。有没什么好的解决方案。
2023-03-22 11 -
HC32F460,想用timer6三角波模式,在峰值处触发ADC转换,怎么操作
大佬们,我需要使用HC32F460,我想用timer的三角波模式,在峰值处触发ADC转换,但是在手册没看到EVT产生的寄存器也没有相关例程,只是在手册中看到可以产生,具体怎么产生没有说明
2022-12-05 9 -
SH79F1611软件开发是用寄存器还是库函数
有做过这方面的大佬,有加VX交流吗?可以有尝
2022-04-10 12 -
MM32F0144 的Flex CAN 有没有用谁用过
谁用过F0144的FlexCAN,
2022-03-08 8 -
请教兆易FAE关于GD32E505RBT6 SHRTIME占空比丢失问题
我在使用SHRTIME配置互补带死区的PWM时发现在输出PWM存在占空比丢失问题。在官方给的例程中也发现有同样问题。请求技术支持或单片机大牛帮忙分析分析。
2022-03-06 27 -
HC32L110深度睡眠喂狗问题
HC32L110进入深度睡眠后,看门狗还会不会工作,如果工作的话,是不是会复位芯片呢?进入睡眠前是不是在关闭看门狗?
2022-01-12 11 -
GD32F450的flash擦除问题
GD32F4的芯片flash擦除最小为扇区,四个16KB,一个64KB,其余全部为128KB.没有页擦除操作。有谁自己写过flash的页擦除函数么,没有页擦除,操作64kb或者128kb区域的代码就很不方便,自己仿照GD32F1的页擦除写了一个,但发现擦除没有效果。有没有什么建议
2022-01-10 10 -
GD32F150R8T6对应stm32哪个型号
有没有同学把gd32工程迁移到Linux平台,用makefile组织工程。到链接阶段,总是报错,经高人指点可能是makefile或者链接脚本的问题,make脚本应该问题不大,拿别人的工程改的,就改了文件路径而已,把头文件,源文件路径改为自己的,其他的啥都没动。我怀疑是链接脚本问题。想参考相对应的stm32链接脚本
2021-10-04 15 -
华大HC32L136系列单片机 正交编码器有谁用过
最近要使用定时器的正交编码器功能,手册也看过几遍,着手要试一下,却发现不知道该如何操作,请问有谁使用过华大的HC32L136系列的正交编码器功能呢,希望指点一下。另外手册中16.2.7中介绍正交编码器计数功能的时候说MSCR.SMS是用来选择编码器模式的,但是在后面的寄存器介绍中找到了MSCR这个寄存器,但是没有找到相关的位。
2021-10-03 59 -
GD32F305VG timer0输入捕获无反应
各位大佬好!我按照GD32F30x的标准库配置了GD32F305VG的timer0定时器并开启了输入捕获功能,配置代码如下:voidtimer_config(void){/*-----------------------------------------------------------------------timer_parameter_structtimer_initpara;timer_ic_parameter_structtimer_icinitpara;rcu_periph_clock_enable(RCU_TIMER0);timer_deinit(TIMER0);/*NVICconfig*/nvic_irq_enable(TIMER0_UP_TIMER9_IRQn,1,1);nvic_irq_enable(TIMER0_Channel_IRQn,1,0);/*TIMER0configuration*/timer_initpara.prescaler=119;timer_initpara.alignedmode=TIMER_COUNTER_EDGE;timer_initpara.counterdirection=TIMER_COUNTER_UP;timer_initpara.period=999;timer_initpara.clockdivision=TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter=0;timer_init(TIMER0,&timer_initpara);timer_icinitpara.icpolarity=TIMER_IC_POLARITY_RISING;timer_icinitpara.icselection=TIMER_IC_SELECTION_DIRECTTI;timer_icinitpara.icprescaler=TIMER_IC_PSC_DIV1;timer_icinitpara.icfilter=0x0;timer_input_capture_config(TIMER0,TIMER_CH_0,&timer_icinitpara);timer_input_capture_config(TIMER0,TIMER_CH_3,&timer_icinitpara);/*auto-reloadpreloadenable*/timer_auto_reload_shadow_enable(TIMER0);timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH0);timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH3);timer_interrupt_enable(TIMER0,TIMER_INT_CH0);timer_interrupt_enable(TIMER0,TIMER_INT_CH3);timer_interrupt_enable(TIMER0,TIMER_INT_UP);timer_enable(TIMER0);}/*中断服务程序*/voidTIMER0_UP_TIMER9_IRQHandler(void){if(timer_interrupt_flag_get(TIMER0,TIMER_INT_FLAG_UP)!=RESET){timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_UP);timer0tick++;}}voidTIMER0_Channel_IRQHandler(){if(timer_interrupt
2021-04-25 15 -
结构体按位对齐后的赋值
本帖最后由slf123123于2021-4-1909:13编辑typedefunsignedlongDWORD;#pragmapack(push)#pragmapack(1)typedefstructsi{DWORDa:4;DWORDb:7;DWORDc:3;DWORDd:1;DWORDe:3;DWORDf:14;}si;#pragmapack(pop)如上所示这个结构体对齐后是四个字节然后uint8buff[4];怎么将buff赋值给整个结构体structsisu={buff[0],buff[1],buff[2],buff[3]};这样赋值不行吗
2021-04-17 14