问答

汇集网友智慧,解决技术难题

jcky001

TA的家园币:7889  

  • 国民技术官方DFU驱动在哪下载

    N32G43XRL_STB_V1.1把NS-LINK程序给刷掉了,查半天论坛说要连上DFU,用国民技术下载工具重新烧写一个,现在卡在DFU了,找半天只从论坛里找到一个驱动,安装提示没有数字签名,咱也不敢安,只能来论坛求助

    技术 link N32G4 2G N32G43x N32

    2024-11-14 6
  • 使用 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

    DMA 读取SPI flash 异常 读取

    2024-11-07 15
  • GD32F303CCT6keil5下载不了程序但是Jlink可以检测到芯片ID

    公司的一个项目画了一块板子因为要适配上位机的原因前前后后调试的半个月,中间因为解压的时候点错了导致在这个项目的文件夹里存在着两套项目文件(GD.后缀和GD_1.后缀),后来有一次因为这个项目进调试后退出会导致keil卡死只能通过任务管理器强行关闭我在网上搜索的教程是删掉uvoptx文件然后重新编译,事情就发生在这个操作之后。后面我发现下不了程序后就把文件恢复了但还是一样报错下载不了,现在的情况就是同一个项目我拷贝到同事电脑上是可以下载的,程序也是可以正常跑起来,但是在我电脑上用keil5和J-Flash都不行然而都可以连接成功和识别芯片ID,更加让我迷惑的是换了另一个项目的同型号芯片的板子是正常的,中间也试过降低速度,J-Flash查看但是都是只有一开始的连接和识别成功后面的在清楚flash阶段就提示报错。这个是和我的接口有关联吗。下面是keil5截图

  • rtthread 驱动 hc32f4a0 开发板上tf卡的问题。。

    本帖最后由yqzq101于2024-10-1609:44编辑hello立创上请了一块谅山派的F4A0开发板。。发现rt-studio里面居然有这个开发板的支持试着创建了工程,闪了个灯一切OK想测试一下tf卡,按照网上搜的例子,打开了SDIOC1,加了fatfs,下载后,总提示如下:msh/>[E/drv.sdio]clockdivisionerror[E/drv.sdio]clockdivisionerror[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd0,arg:0x00000000[E/drv.sdio]clockdivisionerror[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd8,arg:0x000001AAclockdivisionerror[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd5,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd55,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd55,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd55,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd55,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd1,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd1,arg:0x00000000[E/drv.sdio][_sdio_wait_completedtimeout]sta=0x1FFE82A0,cmd1,arg:0x00000000请问这是为啥。。是我哪里没改好吗谢谢

    sdc HC32F4 开发板 rtthread TF IO

    2024-10-16 7
  • GD32f303rct6 RTC问题。

    我准备用兆易的GD32F103rct6,RTC时钟,它的时钟32.768晶振的选择是不是和STM32F103一样容易出现问题,不起振?在选择晶振时应注意什么?

  • 使用stm32mp157进行软件模式spi通讯,无法设置为四线模式

    本帖最后由七呀嘛七于2024-9-1810:10编辑目前使用stm32mp157芯片进行软件模式的spi通讯,设备树内对使用的gpio口定义如下:gpio_spi1:spi@1{compatible="spi-gpio";#address-cells=;#size-cells=;status="okay";sck-gpios=;mosi-gpios=;miso-gpios=;cs-gpios=,;//drv:i0dac:e6num-chipselects=;/*Clients*/spidev@0{reg=;compatible="linux,spidev";spi-max-frequency=;};spidev@1{reg=;compatible="linux,spidev";spi-max-frequency=;};};在使用read或ioctl函数,通过miso线进行读取时,发现读取到的都是mosi线的数据,也就是运行在三线模式。尝试使用ioctl(fd,SPI_IOC_WR_MODE,&mode)关闭三线模式,但没有产生效果。程序中spi读取的相关代码如下:intmyspi2_write_then_read(intfd,constuint8_t*tx_buf,size_tlen_tx,uint8_t*rx_buf,size_tlen_rx){structspi_ioc_transfertransfer[2];//两个传输结构,一个用于写入,一个用于读取memset(transfer,0,sizeof(transfer));//清空结构体//第一个传输,用于写入transfer[0].tx_buf=(unsignedlong)tx_buf;//发送缓冲区transfer[0].rx_buf=0;//不接收数据transfer[0].len=len_tx;//写入数据长度transfer[0].speed_hz=0;//使用当前SPI设备的默认速度transfer[0].cs_change=0;//在结束时不改变片选状态//第二个传输,用于读取transfer[1].tx_buf=0;//不发送数据transfer[1].rx_buf=(unsignedlong)rx_buf;//接收缓冲区transfer[1].len=len_rx;//读取数据长度transfer[1].speed_hz=0;//使用当前SPI设备的默认速度transfer[1].cs_change=0;//完成读写后释放片选//使用ioctl进行双向传输(写入+读取)intret=ioctl(fd,SPI_IOC_MESSAGE(2),transfer);printf("Wrote%zubytesandread%zubytesfromSPI\n",len_tx,len_rx);return0;}intspi_read(intfd,intread_length){uint8_tbuf[read_length];ssize_tret=read(fd,buf,sizeof(buf));printf("ReadfromSPI:");for(inti=0;i<ret;i++){printf(

  • eclipse代码中的乱码影响编译,怎么消除?

    如图:

  • GD32F105代码移植到103

    因为我的新产品不需要OTG功能,我想把原来在GD32F105下开发的代码移植到GD32F103上去,但KEIL里总是提示L6404E错误存储溢出,哪位大佬熟悉代码优化呢

  • N32L436RB OPAMP2不工作

    使用官方DEMO依旧不工作,debug看OPAMP2_CS寄存器没有被赋值,请问是什么原因?

    BUG N32L4 opamp 寄存器 UG demo

    2024-09-03 10
  • hc32f460 can导致单片机复位

    can使能后发送数据,如果can总线上没有其他节点接收数据,单片机直接重启。接上接收设备后,单片机正常工作。can配置代码如下//CANConfigstaticvoidApp_CANCfg(void){stc_can_init_tstcCanInit;/*************************ConfigureCAN1***************************/stc_can_filter_config_tastcFilter1[1U]={{0x1UL,0x0000UL,CAN_ID_STD},};/*InitializesCAN.*/(void)CAN_StructInit(&stcCanInit);stcCanInit.stcBitCfg.u32Prescaler=12U;stcCanInit.stcBitCfg.u32TimeSeg1=5U;stcCanInit.stcBitCfg.u32TimeSeg2=3;stcCanInit.stcBitCfg.u32SJW=3;stcCanInit.pstcFilter=astcFilter1;stcCanInit.u16FilterSelect=CAN_FILTER1;stcCanInit.u8WorkMode=CAN_WORK_MD_NORMAL;//CAN_WORK_MD_ELB;stcCanInit.u8PTBSingleShotTx=CAN_PTB_SINGLESHOT_TX_ENABLE;stcCanInit.u8STBSingleShotTx=CAN_STB_SINGLESHOT_TX_ENABLE;stcCanInit.u8STBPrioMode=CAN_STB_PRIO_MD_DISABLE;stcCanInit.u8RxWarnLimit=10U;stcCanInit.u8ErrorWarnLimit=15U;stcCanInit.u8RxAllFrame=CAN_RX_ALL_FRAME_DISABLE;stcCanInit.u8RxOvfMode=CAN_RX_OVF_DISCARD_NEW;stcCanInit.u8SelfAck=CAN_SELF_ACK_DISABLE;/*EnableperipheralclockofCAN.*/FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_CAN,ENABLE);(void)CAN_Init(CM_CAN,&stcCanInit);CAN_ExitLocalReset(CM_CAN);/*Enabletheinterrupts,thestatusflagscanberead.*/CAN_IntCmd(CM_CAN,CAN_INT_ALL,DISABLE);CAN_IntCmd(CM_CAN,CAN_INT_ERR_INT|CAN_INT_RX_BUF_WARN|CAN_INT_RX|CAN_INT_BUS_ERR,ENABLE);}

  • GD32H737 SPI datasize = 16 bit时无法收发

    这段代码执行的是SPI收发功能,使用仿真器debug时会停在spi_i2s_data_receive处(等待接收标志位),但是如果把datasize改成8bit就能正常收发数据,请问是什么原因呢?uint32_tSpi_Transfer16(SPI_BusDef*spi,uint16_t*TxBuf,uint16_t*RxBuf,uint16_tlen){uint32_tret=0;Spi_Nss(spi->Nss,0);spi_master_transfer_start(spi->Periph,SPI_TRANS_START);for(inti=0;iPeriph)&SPI_FLAG_TP));spi_i2s_data_transmit(spi->Periph,TxBuf);RxBuf=spi_i2s_data_receive(spi->Periph);}while(RESET==spi_i2s_flag_get(spi->Periph,SPI_FLAG_TC));Spi_Nss(spi->Nss,1);returnret;}

  • gd32f470怎么禁用串口0的调试功能

    再调试过程中发现再使用串口0收发数据时,如果调用复位函数NVIC_System_Reset()就会导致程序网络不通,而且也没有复位重启,串口0停止收发数据就不会出现这个问题,而且其他串口均不存在这个问题,怀疑是不是串口0有调试串口的功能,还是别的什么原因导致的。

  • 将STM32移植到了GD32上。怎么验证i2c功能呢?

    将STM32的工程移植到了GD32F103ZET6上,但只有一个GD32系统板,没有接外围的I2C设备(硬件组还没有回板)。怎么靠系统板验证移植的i2c功能呢?谢谢

  • STM32F103怎样实现串口电平取反

    STM32F030有个串口电平取反的函数USART_InvPinCmd(USART_TypeDef*USARTx,uint32_tUSART_InvPin,FunctionalStateNewState);,可以在物理层把接收的数据电平直接取反。STM32F103里面没有这个函数,怎样实现这个功能?

  • GD32烧写不了

    GD32无法烧写

    GD3 烧写 GD32 嵌入式

    2024-06-19 17
1234下一页