打印

GD32F303芯片 SMARTCARD 7816智能卡功能初始化问题

[复制链接]
2704|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lonkyzhang|  楼主 | 2022-4-20 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lonkyzhang 于 2022-4-20 18:09 编辑

在官方库中没有smartcard的例程,我照着ST的方法写了一下初始化,使能了时钟,PB14 的RST复位信号用示波器可以看到,但PB12的CLK对应管脚一直没有时钟信号,一直是低电平。使用的GD32F303RCT6
代码如下,请教各位大神!感谢!
unsigned char Init_Card_Slot(unsigned char Init_Psam_Slot(unsigned char *Atr )

                rcu_periph_clock_enable(RCU_GPIOB);
                rcu_periph_clock_enable(RCU_USART2);
                gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);//VCC PB13
                gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);//RST PB14
                gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_10);//IO PB10 USART2 TX
                gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);//CLK PB12 USART2 CK

                gpio_bit_set(GPIOB, GPIO_PIN_13);//VCC = 1
                //关闭失能
                usart_deinit(USART2);
                usart_disable(USART2);
                usart_synchronous_clock_disable(USART2);
                usart_transmit_config(USART2,USART_TRANSMIT_DISABLE);
                usart_receive_config(USART2,USART_RECEIVE_DISABLE);
                usart_hardware_flow_rts_config(USART2,USART_RTS_DISABLE);
                usart_hardware_flow_cts_config(USART2,USART_CTS_DISABLE);
                //配置传输格式
                usart_word_length_set(USART2,USART_WL_9BIT);
                usart_stop_bit_set(USART2,USART_STB_1_5BIT);
                usart_parity_config(USART2,USART_PM_EVEN);
                usart_transmit_config(USART2,USART_TRANSMIT_ENABLE);
                usart_receive_config(USART2,USART_RECEIVE_ENABLE);
               
                usart_synchronous_clock_config(USART2,USART_CLEN_NONE,USART_CPH_1CK,USART_CPL_LOW);
                usart_baudrate_set(USART2,9600);
                usart_guard_time_config(USART2,0x00);
                //其他模式失能
                usart_lin_mode_disable(USART2);
                usart_halfduplex_disable(USART2);
                usart_irda_mode_disable(USART2);
                //开启USART2
                usart_enable(USART2);
               
                gpio_bit_reset(GPIOB, GPIO_PIN_14);//RST = 0
                usart_smartcard_mode_nack_disable(USART2);
                usart_smartcard_mode_enable(USART2);//使能智能卡模式
                usart_synchronous_clock_enable(USART2);//使能时钟
                usart_smartcard_autoretry_config(USART2,0);//不需要重发

                delay_1ms(4);
                gpio_bit_set(GPIOB, GPIO_PIN_14);//RST = 1

                SMARTCARD_ATR_Receive(USART2,Atr,&len,300);

                return len;


使用特权

评论回复
沙发
pangpun| | 2022-5-18 10:07 | 只看该作者
你配置好了吗?  我也遇见了同样的问题,你要是配置好了告诉下怎么配置可以吗? 谢谢

使用特权

评论回复
板凳
pangpun| | 2022-5-18 11:01 | 只看该作者
加上时钟分频配置就好了 usart_prescaler_config(USART2,8);

使用特权

评论回复
地板
xxycode| | 2025-6-9 14:55 | 只看该作者

GD32F303芯片 SMARTCARD 7816智能卡功能初始化问题

请问最后怎么解决的呢?

使用特权

评论回复
5
powerantone| | 2025-6-24 16:53 | 只看该作者
在配置USART2之前,相关的GPIO和USART时钟是否已经正确使能。

使用特权

评论回复
6
stormwind123| | 2025-6-24 16:54 | 只看该作者
在配置USART2的参数之后,再调用usart_enable(USART2);来使能USART2。当前代码中这一顺序是正确的。

使用特权

评论回复
7
probedog| | 2025-6-24 16:54 | 只看该作者
USART配置问题

使用特权

评论回复
8
classroom| | 2025-6-24 16:55 | 只看该作者
检查波特率与时钟分频是否符合要求。

使用特权

评论回复
9
cr315| | 2025-6-24 16:56 | 只看该作者
建议联系技术支持。

使用特权

评论回复
10
jcky001| | 2025-6-24 19:56 | 只看该作者
检查硬件连接。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝