完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于GD32IrDA问题
最近因为项目涉及到国产化,所以用到了兆易的GD32F450单片机。 其中用到了串行IrDA(SIR),折腾了几天时间,为了避免大家踩坑,所以总结一下我遇到的问题。 项目中用到红外收发数据,使用的TFBS4652 收发器。 一开始我先初始化串口,确保能够正常收发数据之后,然后调用了usart_irda_mode_enable(com);函数使能红外。初始化之后 我用 USB转IrDA 工具,通过我主控板收发数据,发现数据能够正确发送,但是不能接收(进入不了接收中断,RXNE标志位也没有置位)问题就出现再这里,我以为是红外模块部分有问题,所以通过查询资料,利用示波器,发现模块也没有问题,那么问题应该就是在单片机初始化上。 对照初始化函数,发现有一个IrDA时钟初始化的函数没有调用,调用之后能够正确接收。 代码如下: void gd_eval_com_init(uint32_t com) { /* enable GPIO clock */ uint32_t COM_ID; if(EVAL_COM1 == com) { COM_ID = 0U; } rcu_periph_clock_enable( EVAL_COM_GPIO_CLK); /* enable USART clock */ rcu_periph_clock_enable(COM_CLK[COM_ID]); /* connect port to USARTx_Tx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_TX_PIN[COM_ID]); /* connect port to USARTx_Rx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_RX_PIN[COM_ID]); /* configure USART Tx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_TX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_TX_PIN[COM_ID]); /* configure USART Rx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_RX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_RX_PIN[COM_ID]); /* USART configure */ usart_deinit(com); usart_baudrate_set(com,9600U); usart_stop_bit_set(com, USART_STB_1BIT); usart_receive_config(com, USART_RECEIVE_ENABLE); usart_transmit_config(com, USART_TRANSMIT_ENABLE); usart_irda_lowpower_config(com, USART_IRLP_NORMAL); /* 这一句一定要加 */ usart_prescaler_config(com, 0x01); usart_irda_mode_enable(com); usart_enable(com); /* USART interrupt configuration */ nvic_irq_enable(UART3_IRQn, 1, 1); /* enable USART0 receive interrupt */ usart_interrupt_enable(UART3, USART_INTEN_RBNEIE); // /* enable USART0 transmit interrupt */ // usart_interrupt_enable(USART0, USART_INTEN_TBEIE); } 第一次发文章,有点啰嗦,希望文章对大家有用,减少大家开发时间。谢谢! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1810 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
737 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1687 浏览 2 评论
1945浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
749浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
584浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
567浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 10:08 , Processed in 0.880276 second(s), Total 75, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号