打印
[STM32F1]

串口问题

[复制链接]
1784|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冷夜辰|  楼主 | 2015-5-4 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下各位大神 我用stm32f103zet6 做的智能卡协议 为什么在stm32f103c8t6上面不可以用??不是串口管脚号 时钟什么都一样吗?请问一下 还有什么要注意的啊?stm32f103zet6 用的是串口3 ,stm32f103c8t6用的也是串口3 ,还是说stm32f103c8t6这个串口3 不支持智能卡协议吗?
沙发
冷夜辰|  楼主 | 2015-5-4 11:17 | 只看该作者
不过stm32f103zet6这个我用的是144脚,stm32f103c8t6用的是48脚的

使用特权

评论回复
板凳
lei129210| | 2015-5-4 11:38 | 只看该作者
换了芯片,相应的对照原理图更改下配置啊。。。

使用特权

评论回复
地板
mmuuss586| | 2015-5-4 12:17 | 只看该作者
接的PB10,PB11吗?

使用特权

评论回复
5
mmuuss586| | 2015-5-4 12:17 | 只看该作者
连的哪个脚,程序的初始化部分发上来看看;

使用特权

评论回复
6
desertsailor| | 2015-5-4 12:39 | 只看该作者
应该是初始化的问题

使用特权

评论回复
7
冷夜辰|  楼主 | 2015-5-4 15:21 | 只看该作者
lei129210 发表于 2015-5-4 11:38
换了芯片,相应的对照原理图更改下配置啊。。。

都是使用的72MHz,管脚也是一样的啊

使用特权

评论回复
8
冷夜辰|  楼主 | 2015-5-4 15:21 | 只看该作者
lei129210 发表于 2015-5-4 11:38
换了芯片,相应的对照原理图更改下配置啊。。。

都是使用的72MHz,管脚也是一样的啊

使用特权

评论回复
9
冷夜辰|  楼主 | 2015-5-4 15:22 | 只看该作者
mmuuss586 发表于 2015-5-4 12:17
接的PB10,PB11吗?

是的,接的USART3的管脚。

使用特权

评论回复
10
冷夜辰|  楼主 | 2015-5-4 15:25 | 只看该作者
desertsailor 发表于 2015-5-4 12:39
应该是初始化的问题

初始化通过了啊;如果初始化出错的话,不是应该进入硬件错误那个函数吗?

使用特权

评论回复
11
lei129210| | 2015-5-4 15:35 | 只看该作者
冷夜辰 发表于 2015-5-4 15:25
初始化通过了啊;如果初始化出错的话,不是应该进入硬件错误那个函数吗? ...

初始化错误不会进错误中断。没有原理图。没有程序。谁知道你的问题。。。。

使用特权

评论回复
12
desertsailor| | 2015-5-4 15:47 | 只看该作者
冷夜辰 发表于 2015-5-4 15:25
初始化通过了啊;如果初始化出错的话,不是应该进入硬件错误那个函数吗? ...

初始化通过了只是说明语句能执行,不代表是按你想实现的功能正确配置的。

使用特权

评论回复
13
冷夜辰|  楼主 | 2015-5-4 16:23 | 只看该作者
mmuuss586 发表于 2015-5-4 12:17
连的哪个脚,程序的初始化部分发上来看看;

        GPIO_InitTypeDef                 GPIO_InitStructure;
        USART_ClockInitTypeDef        USART_ClockInitStructure;
        USART_InitTypeDef                USART_InitStructure;
       
        RCC_APB2PeriphClockCmd(SC_USART_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
       
        /* Configure USART CK pin as alternate function push-pull */
        GPIO_InitStructure.GPIO_Pin = SC_USART_PIN_CK;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(SC_USART_GPIO, &GPIO_InitStructure);

        /* Configure USART Tx pin as alternate function open-drain */
        GPIO_InitStructure.GPIO_Pin = SC_USART_PIN_TX;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
        GPIO_Init(SC_USART_GPIO, &GPIO_InitStructure);

        /* Configure Smartcard Reset pin */
        GPIO_InitStructure.GPIO_Pin = SC_PIN_RESET;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(SC_PIN_RESET_GPIO, &GPIO_InitStructure);
       
        USART_SetPrescaler(SC_USART, 0x05);
        USART_SetGuardTime(SC_USART, 16);
       
        USART_StructInit(&USART_InitStructure);
        USART_InitStructure.USART_BaudRate                 = 9677;
        USART_InitStructure.USART_WordLength         = USART_WordLength_9b;
        USART_InitStructure.USART_StopBits                 = USART_StopBits_1_5;
        USART_InitStructure.USART_Parity                 = USART_Parity_Even;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_InitStructure.USART_HardwareFlowControl =                 USART_HardwareFlowControl_None;
        USART_Init(SC_USART, &USART_InitStructure);

        USART_ClockInitStructure.USART_Clock         = USART_Clock_Enable;
        USART_ClockInit(SC_USART,&USART_ClockInitStructure);
       
        /* Enable the SC_USART Parity Error Interrupt */
        USART_ITConfig(SC_USART, USART_IT_PE, ENABLE);

        /* Enable the SC_USART Framing Error Interrupt */
        USART_ITConfig(SC_USART, USART_IT_ERR, ENABLE);

        /* Enable SC_USART */
        USART_Cmd(SC_USART, ENABLE);

        /* Enable the NACK Transmission */
        USART_SmartCardNACKCmd(SC_USART, ENABLE);

        /* Enable the Smartcard Interface */
        USART_SmartCardCmd(SC_USART, ENABLE);
这个是我的初始化, gpio口的

使用特权

评论回复
14
冷夜辰|  楼主 | 2015-5-4 16:26 | 只看该作者
lei129210 发表于 2015-5-4 15:35
初始化错误不会进错误中断。没有原理图。没有程序。谁知道你的问题。。。。 ...

我上次换芯片的时候初始化错误就进入了硬件错误。

使用特权

评论回复
15
冷夜辰|  楼主 | 2015-5-4 16:32 | 只看该作者
lei129210 发表于 2015-5-4 15:35
初始化错误不会进错误中断。没有原理图。没有程序。谁知道你的问题。。。。 ...

stm32f103c8t6 这个板不是我的,就是一个最小系统板,就只是把所有管脚接出来了 ,他们把原理图丢了,我也没有啊;

程序初始化以贴,我也不知道是什么问题;

使用特权

评论回复
16
大秦正声| | 2015-5-4 16:59 | 只看该作者
USART_InitStructure.USART_BaudRate                 = 9677;
晶振好吗?

使用特权

评论回复
17
lei129210| | 2015-5-4 17:00 | 只看该作者
冷夜辰 发表于 2015-5-4 16:23
GPIO_InitTypeDef                 GPIO_InitStructure;
        USART_ClockInitTypeDef        USART_ClockInitStructure;
        USART_I ...

为什么是OD输出?波特率为什么是9677?

使用特权

评论回复
18
冷夜辰|  楼主 | 2015-5-4 18:40 | 只看该作者
lei129210 发表于 2015-5-4 17:00
为什么是OD输出?波特率为什么是9677?

因为7816协议只有一根I/O线,然后提供给智能卡的时钟算出来波特率就是9677

使用特权

评论回复
19
冷夜辰|  楼主 | 2015-5-4 18:51 | 只看该作者
大秦正声 发表于 2015-5-4 16:59
USART_InitStructure.USART_BaudRate                 = 9677;
晶振好吗?

这个就不清楚了~~但是在stm32f103zet6这个上面是正常的

使用特权

评论回复
20
mmuuss586| | 2015-5-4 21:34 | 只看该作者

用示波器看看,当普通串口用,发数据,看是否有波形;
比如发0X55,正常的话,应该是方波;

没波形的话,估计串口初始化都不对;

使用特权

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

本版积分规则

2

主题

24

帖子

0

粉丝