世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

我是新手,请教ST7SCR单片机的问题,请帮忙啊

作者:dlxiaoqiu 栏目:MCU技术
我是新手,请教ST7SCR单片机的问题,请帮忙啊
我是新手,准备用ST7SCR单片机做智能卡读写器,麻烦有用过ST7系列的,或是熟悉ST7的指点一下,智能卡接口那部分的 波特率和电压怎么设置啊,在单片机里没有SFR还对这两个控制的啊,有点郁闷了呢  请帮忙!

2楼: >>参与讨论
浪淘沙
ST7SCR波特率和电压的设置

首先,请确认你的资料是最新的,请到ST的网站下载,最新的是2005年8月发布的Rev.3。

在12.4.3.1小节中有下面一段话明确回答了智能卡接口电压的设置:
Smartcard POWER Supply Selection
The Smartcard interface consists of a POWER supply OUTPUT on the CRDVCC pin and a set of card interface I/Os which are POWERed by the same rail. The card voltage (CRDVCC) is user programmable via the VCARD [1:0] bits in the CRDCR register (REFER to the Smartcard Interface section). Four voltage VALUEs can be selected: 5V, 3 V, 1.8 V or 0V.
在随后的12.4.3.3小节中有下面一段话讲述了如何设置智能卡接口的波特率:
Elementary Time Unit Counter
This 11-bit counter controls the working frequency of the UART. The operating frequency of the clock is the same as the card clock frequency (i.e. 4 MHz).
A compensation mode can be activated via the COMP bit of the CRDETU1 register to allow a frequency granularity down to a half-etu.
Note: The decimal VALUE is limited to a half clock cycle. The bit duration is not fixed. It alternates between n clock cycles and n-1 clock cycles, where n is the VALUE to be written in the CRDETU register. The character duration (10 bits) is also equal to 10*(n - ½) clock cycles This is precise enough to obtain the character duration specified by the ISO7816-3 STANDARD.
For example, if F=372 and D=32 (F being the clock rate conversion factor and D the baud rate adjustment), then etu =11.625 clock cycles.
To achieve this clock rate, compensation mode must be activated and the etu duration must be programmed to 12 clock cycles.
The result will be an average character duration of 11.5 clock cycles (for 10 bits).
注意,智能卡接口的时钟频率是固定为4MHZ,且不同调整。
下面为数据手册下载地址:

//www.st.com/stonline/books/pdf/docs/8951.pdf

3楼: >>参与讨论
dlxiaoqiu
那也就是说波特率是不能自己随意设置了?
这些资料,谢谢,智能卡接口的时钟频率是固定为4MHZ,那么波特率是多少啊,用什么方法能改变呢.请大哥再指点一下吧

4楼: >>参与讨论
浪淘沙
智能卡接口如何设置波特率?
不知楼主是没有资料呢,还是不愿看,也许是看不明白。

智能卡接口数据传输的波特率不是像UART一样通过改变时钟频率决定的,波特率是由设置的ETU决定,ETU又是通过F因子和D因子决定的,
                   F     1
          1 ETU = --- X ---
                   D     f

不可想象没有读ISO7816-3,你是如何做智能卡接口的。

你还是去读一读ISO7816-3的文本再回来讨论,否则我们谈不到一起去。你如果没有这个文档,去Google搜一下,很容易找的!

5楼: >>参与讨论
dlxiaoqiu
我觉得你说得很有道理!
我觉得你说的很有道理,虽然带些气愤的语气,呵呵
  首先请原谅我的无知,
  
  前些天看过 中国金融集成电路(IC)卡规范
          第1  ,2部分:电子钱包/电子存折卡片规范
,以为和ISO7816的应该差不多,所以ISO-7816-3就真的没看,我看的标准里也提到了ETU,不过现在确实有些晕,也许是第一次自己作项目,多多少少有些手忙脚乱,还请以后大哥多多指点!
   
  希望以后还能和大哥多请教,
         相信有一天我会成长起来的!

                    感谢大哥的指点!~
    

6楼: >>参与讨论
vigia
ST公司有完整的ST7SCR解决方案
可以在www.stmcu.com里下载,包括波特率的设置等等都有现成的函数可以调用。

不过作为一个项目的开发者,协议是必须了解的。

7楼: >>参与讨论
dlxiaoqiu
波特率的设置用函数调用么???
 
8楼: >>参与讨论
dlxiaoqiu
波特率的设置用函数调用么???
这位大哥,你好,

    现在带智能卡接口的单片机的内部都会有电压控制的寄存器 和 波特率的发生器的,
       可是ST7SCR单片机提供给智能卡接口的时钟频率固定为4MHZ.html">4MHZ,也就是CLK不能改变,那么波特率怎么改变呢?
     难道真的  说的波特率是由设置的ETU决定,我看过协议了,我不这么认为啊.
      ST7SCR把CLK固定为4MHZ,
      "波特率的设置等等都有现成的函数可以调用"可以把CLK改了么,还请vigia指点一下啊,不然我就得不能用这个芯片了,如果波特率不能改的话,那设计出来的东西适用的范围也太小了啊

9楼: >>参与讨论
vigia
IS07816接口不是通过改时钟修改波特率的
“难道真的  说的波特率是由设置的ETU决定,我看过协议了,我不这么认为啊.”

你从协议的哪里得出这个结论的?

7816规范的复位应答章节具体解释了ETU。
ETU指基本时间单位(可以先简单理解为1BIT),在卡片复位应答期间, 1ETU应等于372个时钟周期,这个是初始值。

调整波特率即调整ETU所对应的时钟周期。

因此,即使时钟固定,波特率仍是可调的,我说的调用函数修改波特率即是修改ETU所对应的时钟周期。

网上现在应该能找到中文的7816-1,2,3规范。

10楼: >>参与讨论
浪淘沙
楼主:你是不是找不到ISO7816的文本呢?
我帮你在网上找到一个英文版和一个中文版,你可以读一读,一定对你理解智能卡接口有好处。中文版太大(>500KB),请自己去下载:
    //www.daxia.com/list_1777.shtml。

英文版给你送上。

你说如果不能通过改变时钟频率而改变波特率,你就不能用这款芯片了,不知你发现那一款芯片有你所说的功能,我也非常有兴趣使用这样的芯片,至少可以开阔一下眼界。



11楼: >>参与讨论
dlxiaoqiu
大哥,AT89C5122就是这样啊,它就带波特率发生寄存器的啊,
大哥,AT89C5122就是这样啊,它就带波特率发生寄存器的啊,
这样很容易的就可以改变波特率了啊

ST7SCR单片机不带波特率发生寄存器,CLK为4MHZ,
    理论上改变ETU是会改变波特率,但具体的实现我还得研究一下,如果大哥具体细节很了解的话,不妨再指点一二,这么设置波特率我还真没有试过啊


对了,那个中文ISO7816

12楼: >>参与讨论
浪淘沙
波特率发生寄存器——他们只是用这个名字
请看数据手册上第57页的框图,那个“11-Bit ETU Counter”就是你要的寄存器呀,只是我们不叫“波特率发生寄存器”,因为ISO7816-3中没有这个概念。

另外要说明的是,那个“波特率发生寄存器”也不是用于改变智能卡时钟的,根据ISO7816-3,时钟一旦定下来后是不能大幅改变的。

楼上的vigia说得对,“调整波特率即调整ETU所对应的时钟周期”,如你需要9600的波特率,以标准的3.5712MHz的时钟频率计算,你应在ETU计数器中写入372。372也是所有所有智能卡和读卡器在上电时默认的速率。

ETU的概念是说,实际传输一位的数据比特对应有多少时钟周期,即9600的波特率对应372,19200的波特率对应186。

改变时钟频率只改变了物理的传输速率,但如不改变ETU,实际的波特率并没有变,波特率是一个逻辑的概念,请不要与UART的波特率混为一谈,UART中传输没有时钟信号。

另外想问一下,你要做什么项目?

13楼: >>参与讨论
vigia
LZ你受UART的影响太深了
7816只是一个类似UART的协议,而不是一个完全的UART。

比如说9600的波特率,对于UART就是9600,但是对于7816就是另一种概念。

我前面说过了,7816的波特率是通过ETU来调整的。

如果4M时钟,初始ETU固定为372时钟周期,那波特率就是1/(1/4M*372)=10.752K

而如果是3M时钟,那初始波特率就是1/(1/3M*372) = 8.064K

而只有在时钟是3.5712M时,初始波特率才是9600

AT89C5122我没用过,不过看了一下DATASHEET,感觉和ST7SCR的设置是一样的,即对ETU的设置,LZ你用过AT89C5122,测试过实际的时钟和波特率吗?

14楼: >>参与讨论
dlxiaoqiu
恩,有点意思了!
我现在觉得你们怎么那么专业啊,比较强啊!
    
    把vigia哥说的那个"调用的函数"找出来再看看吧,看看人家怎么做的吧还是.
    //www.stmcu.com/familiesdocs-15.html#SOFTWARE%20-%20Microcontrollers
   
    是在这吧,我还没找到呢!晕~

    

    
    

15楼: >>参与讨论
dlxiaoqiu
AT89C5122我没用过,也只是了解啊
AT89C5122我没用过,也只是了解啊,看看资料而已啊,没用它做过东东的,更谈不上实际测试了啊,
   对了,大哥,你说的那个波特率设置的函数程序在哪啊,
   网站上的资料倒是挺全的,不过关于这块的例子DEMO怎么没有呢,USB和FLASH方面那都有啊,SMART card interface 这也没有,或是我还没找到.
    如果大哥熟悉的话,就指点下吧,不行我就再找找吧

  哎,技不如人啊!



16楼: >>参与讨论
dlxiaoqiu
是指这个么?
 


17楼: >>参与讨论
vigia
晕,在stmcu网站里查找ST7SCR就都有了么
送个source code给你,其他你自己去找吧


18楼: >>参与讨论
dlxiaoqiu
大哥,好感谢你啊!
哥,你是做什么的啊,看来以后真的得多多请教你了,我现在有好多问题呢,都没怎么好意思问呢还
  千万不要闲我烦哈

  ST7SCR是有自己专用的仿真器,对吧,不过,我问了,太贵了,那有没有第三方的呢,
  我下载了ST7 Visual Develop和 ST7 Visual Programmer这两个软件,发现他们的编译环境还是KEIL有点不同的是吧

  如果闭着眼睛调,对与我这水平,那算是毁了啊!
   

19楼: >>参与讨论
浪淘沙
ST7SCR的专用仿真器是专为产品开发设计的
好像没听说市面上有第三方的ST7SCR仿真器。

ST的专用仿真器功能非常强大,是专为产品开发设计的,用它开发出来的产品稳定可靠,且开发周期短,仿真环境与实际工作环境非常一致,所以价格也较高,但对专业的读卡器生产厂商来说这点钱就是九牛一毛了。



20楼: >>参与讨论
dlxiaoqiu
哥啊,用ST7RSC对于我的设计有一点还是困难啊~!
 
哥,
    通过你的一番指点之后,我对设计的芯片选型,还是思路上都了提高,不过在摸索前进的过程中又遇到了困难啊,
    因为我要设计的读卡器不仅要做产品,也要自己调试用,所以需要ST单片机给智能卡IC的时钟频率也要变,即CLK也要变,在1~10MHZ吧,
   虽然解决了VCC和波特率的问题,不过CLK可调的要求有点难为ST7了,也有点难为我了
    我提到的AT89C5122 能达到要求,内部还有FLASH ,比较合适,只是调试是个问题,它没有仿真器,也没有第三方支持的,就不能考虑了啊
    还有就是PHILIPS的TDA8030/31,用的人也特少,问题 咄咄!

    带USB和智能卡接口的,内部有FLASH或E2PROM的,电压,时钟,波特率可设置的芯片,我到哪里去寻啊???  (是不是对芯片要求太高了!)
      给介绍下这方面的芯片啊!

    浪淘沙大哥,你是做ST的吧,你那有没有这反面的芯片啊,介绍给俺用吧!


21楼: >>参与讨论
vigia
为什么一定要修改CLK呢?
AT89C5122关于CLK的描述如下,可见在兼容ISO7816的同时,可选的时钟频率为1M,2M和4M。

而ST7SCR的时钟频率固定为4M

AT89C5122有32K内置FLASH,768BRAM
ST7SCR有内置16KFLASH,768BRAM

别的在静电保护和EMV方面2款芯片基本一致

但ST网站上有完整的读卡器解决方案,上位机驱动,测试软件和上层软件开发包,可以加速开发。

到底选什么芯片取决于你的项目需求。

22楼: >>参与讨论
dlxiaoqiu
难道要用ARM做么???
  其实要是能用ARM做是比较好的,主要是还能学学ARM,那就比较好了,不过出于各方面的考虑,还是先寻单片机吧,呵呵
  对了,是斑竹吧,把我的帖子搬到这来了,挺有意思!

                 呵呵~~~

23楼: >>参与讨论
平常人
ST只有一款专用的智能卡读卡
没听说ST有其他的产品与这款功能近似的,你的选项不多,其实读卡器的市场不是很大,你能找到一两款以是幸运的了。

你果真是够菜的,ISO7816说CLK只能是1-5MHz,但你却要1-10MHz,还要变来变去,是不是想测试哪家的卡工作频率高吧?如果真是这样,你还是自己搭一个硬件接口吧,市场上没有这样的片子,因为这不符合国际标准。

24楼: >>参与讨论
浪淘沙
哈哈楼主,恭贺乔迁之喜
要想用ARM,就看看STR710吧,它也有专门的智能卡接口。

25楼: >>参与讨论
starm
STR711/2 也有专门的智能卡接口?
 
26楼: >>参与讨论
grant_jx
STR71x系列第一个UART口
支持SMART Card ISO7816-3

27楼: >>参与讨论
东南西北中
推荐加精
这个帖子很有深度,建议加精。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
我用ST72F324系列单片机,用什么仿真器
3.3V的STR71x系列ARM,其IO不完全是可以承受5V电压的
提供ST开发工具
欢迎新斑竹上任,掌声鼓励鼓励
轻松入门开发ARM程序(为初学者写的入门手册)-10-


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号