10825|25

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

hdlc定时器问题 [复制链接]

在str71x的hdlc的测试程序中,用timer2为hdlc配置时钟,其中有几处不清楚。请教了。程序如下void clks_init(void)
  {
    RCCU_Div2Config (ENABLE);            //OSC input is divide by 2
    RCCU_PLL1Config(RCCU_PLL1_Mul_12, RCCU_Div_2); //RCLK = 48MHz
    RCCU_RCLKSourceConfig (RCCU_PLL1_Output);
    RCCU_MCLKConfig(RCCU_DEFAULT);          //MCLK=48MHz
    RCCU_PCLKConfig(RCCU_Div_2);          //PCLK2=24MHz APB2 periph
    RCCU_FCLKConfig(RCCU_Div_2);          //PCLK1=24MHz APB1 periph (fast)
    RCCU_PLL2Config(RCCU_PLL2_Mul_12, RCCU_Div_2); //configure PLL2 for HDLC clock

        //setup timer2 (P0.13) for external HDLC clock connected to HCLK
    TIM_ClockSourceConfig (TIM2, TIM_INTERNAL );
    TIM_PrescalerConfig (TIM2,10 ); //24Mhz/77 = 312KHz
    TIM_PWMOModeConfig (TIM2,0x7,TIM_LOW,0x7,TIM_HIGH); //square wave output
    TIM_CounterConfig(TIM2, TIM_START);
  }
我的问题是为什么倒数第三句TIM_PrescalerConfig (TIM2,10 ); //24Mhz/77 = 312KHz
的注释中是对24m分频,应该是48m对么?
在主函数中://***************** Test 2 External clocking, print receive buffer*********************
//External clock (155.8kHz) on PLL2 input HCLK
HDLC_XmitClockSourceConfig(HDLC_HTXCKSource);//写波特率的RCKS
HDLC_XmitBaudrateConfig(0);
HDLC_RecvClockSourceConfig(HDLC_HRXCK);//写预频分因子rcks
HDLC_RecvClockPrescalerConfig(0);//写预分频因子prs
问题是://External clock (155.8kHz) on PLL2 input HCLK这句注释看不懂
还有:RCCU_Div2Config (ENABLE);            //OSC input is divide by 2这句能理解,但是注释里面用osc?对么?osc不是32k?
此帖出自stm32/stm8论坛

最新回复

您好,我现在需要用心STR71x的HDLC功能,但是官网上提供的函数库没有该功能,您能给我发一份带有hdlc.c.h的文件吗,感激不尽 794732628@qq.com  详情 回复 发表于 2015-12-8 09:33
点赞 关注
 

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

“为什么倒数第三句TIM_PrescalerConfig (TIM2,10 ); //24Mhz/77 = 312KHz
的注释中是对24m分频,应该是48m对么?”
定时器是连接在APB2上的,而APB2的时钟为:
RCCU_PCLKConfig(RCCU_Div_2);          //PCLK2=24MHz APB2 periph
所以应该是24MHz。

“//External clock (155.8kHz) on PLL2 input HCLK这句注释看不懂”
这里指HCLK的时钟是来自PLL2的,而输入PLL2的时钟为155.8kHz

“还有:RCCU_Div2Config (ENABLE);           //OSC input is divide by 2这句能理解,但是注释里面用osc?对么?osc不是32k?”
这里的osc并不是指32k的RTC时钟,它是大写的,只是简称而已,是指系统的外部有源时钟,即CK。
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

谢谢了,分析的很好。但是第二个问题还有些疑问。

第二个问题还有些疑问:
“HCLK的时钟是来自PLL2的,而输入PLL2的时钟为155.8kHz ”那么配置timer2是做什么用的呢?提供pll2的155.8的输入时钟么?
     TIM_PWMOModeConfig (TIM2,0x7,TIM_LOW,0x7,TIM_HIGH); //square wave output这里输出的是一个占空比多少的信号阿。我觉得应该是百分之百的对么?周期是0x7。对这个timer2的功能看了几遍,理解不了,你给解释一下吧。
另外,按照“HCLK的时钟是来自PLL2的,而输入PLL2的时钟为155.8kHz ”,那么pll2经过
RCCU_PLL2Config(RCCU_PLL2_Mul_12, RCCU_Div_2); //configure PLL2 for HDLC clock之后,变成了934.8k为hdlc提供时钟,不对吧?
 在TEXT2中有一个这样的解释,跟这个相关,但是不懂。“pll2(HTXCK)是hdlc的时钟源,程序中配置timer2以提供hdlc时钟;发送波特率被设置为HTXCK/1。”
附上text2的一段时钟配置程序://***************** Test 2 External clocking, print receive buffer*********************
//External clock (155.8kHz) on PLL2 input HCLK
HDLC_XmitClockSourceConfig(HDLC_HTXCKSource);//写波特率的RCKS
HDLC_XmitBaudrateConfig(0);    
HDLC_RecvClockSourceConfig(HDLC_HRXCK);//写预频分因子rcks
HDLC_RecvClockPrescalerConfig(0);//写预分频因子prs

HDLC_Xmit_Frame (XmitBuffer, 6);//加载发送缓冲,并开始发送
十分感谢。
此帖出自stm32/stm8论坛
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 

路过的达人,指点一下

                                 指点一下
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 

希望今天有高手帮忙

                                 自己顶一下
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 

下周给你详细讲解

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 

呵呵,先谢谢了

                                 谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 

高人给个回答吧

我们不是约定好的么
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 

别用710的HDLC了,根本就不能用

别用710的HDLC了,根本就不能用
双工都不行,咋用
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 

ST_ARM 来了么?期待你的回答

 ST_ARM 来了么?期待你的回答。
 另,回复9楼,我看你上次发的帖子说,好像是最简单的nrz模式下,能用?对么
 我看了好一段时间了,我想把这几个问题,弄清楚了,自己试试,要不换了板子,还要从头看。
 但是我的这几个问题,总是找不到人问。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 

HDLC定时器问题

回10楼,这星期没看到ST_ARM,好像出差参加培训去了。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 

请教

                                 ST_ARM 回来了么
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

13
 

回10楼

我看了看你的问题,他的HDLC.c例程有test1和test2,test1是内部分频作为发送和接收时钟,test2是外部引脚HCLK来的时钟作为发送接收时钟,它的OSC用的是16M,这个在一个.h文件里定义的,我忘了是哪个.h




另外我也非常想问问ST_ARM这个人
这款芯片的HDLC是不是真的用不了,用不了就算了,至少请给一个说法
最好有折中的解决办法,ST的网站上已经全部删除掉HDLC功能的描述,是不是可以理解成ST想慢慢淡化这个芯片的HDLC功能,因为根本就不能用!
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 

fl123ly的问题解答


Q: “HCLK的时钟是来自PLL2的,而输入PLL2的时钟为155.8kHz ”那么配置timer2是做什么用的呢?提供pll2的155.8的输入时钟么?

A: 配置timer2是通过timer2在P0.13引脚上输出155.8kHz,外部用引线连接到HDLC的HCLK引脚上。

Q:TIM_PWMOModeConfig (TIM2,0x7,TIM_LOW,0x7,TIM_HIGH); //square wave output这里输出的是一个占空比多少的信号阿。我觉得应该是百分之百的对么?周期是0x7。对这个timer2的功能看了几遍,理解不了,你给解释一下吧。

A:你说得对,占空比是百分之百,所以这里需要修改一下。使用TIM_PWMOModeConfig输出一个占空比为百分之五十的方波。具体数值我没有算。

Q:另外,按照“HCLK的时钟是来自PLL2的,而输入PLL2的时钟为155.8kHz ”,那么pll2经过
RCCU_PLL2Config(RCCU_PLL2_Mul_12, RCCU_Div_2); //configure PLL2 for HDLC clock之后,变成了934.8k为hdlc提供时钟,不对吧?

A:hdlc时钟为 155.8kHz×12/2 = 934.8。正确。

Q:在TEXT2中有一个这样的解释,跟这个相关,但是不懂。“pll2(HTXCK)是hdlc的时钟源,程序中配置timer2以提供hdlc时钟;发送波特率被设置为HTXCK/1。”
附上text2的一段时钟配置程序:
//***************** Test 2 External clocking, print receive buffer*********************
//External clock (155.8kHz) on PLL2 input HCLK
HDLC_XmitClockSourceConfig(HDLC_HTXCKSource);//写波特率的RCKS
HDLC_XmitBaudrateConfig(0);    
HDLC_RecvClockSourceConfig(HDLC_HRXCK);//写预频分因子rcks
HDLC_RecvClockPrescalerConfig(0);//写预分频因子prs

HDLC_Xmit_Frame (XmitBuffer, 6);//加载发送缓冲,并开始发送
 
A:Pll2(HTXCK)的输出是hdlc的时钟源是指HDLC这个外设运行所需要的时钟。配置timer2以提供hdlc时钟,是用于产生方波作为PLL2的输入;即timer2的输出是PLL2的输入,而PLL2的输出是HDLC的输入,一脉相连的。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

15
 

to creeping

STR71x系列芯片中的HDLC有一些问题,在某些条件下还是能用的,由于它的功能受到限制,我不再建议客户使用这个功能,如果你的HDLC比较简单,加上你使用的HDLC的功能刚好符合某些条件,还是能用的。

此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

16
 

感谢阿

                                 这么详细,感谢阿。真强。
此帖出自stm32/stm8论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

17
 

RE:

"STR71x系列芯片中的HDLC有一些问题,在某些条件下还是能用的,由于它的功能受到限制,我不再建议客户使用这个功能,如果你的HDLC比较简单,加上你使用的HDLC的功能刚好符合某些条件,还是能用的。"


不能双工模式吧?就是不能同时收、发,这样这个HDLC功能在我看来确实没有用的必要。

ST作为欧洲大厂出了这个严重问题,宣传说有这个功能,而我买器件的时候没有任何说明,我买了100多片的,ST不能做一点补救吗?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

18
 

还有一个问题

    TIM_PrescalerConfig (TIM2,10 ); //24Mhz/77 = 312KHz
    TIM_PWMOModeConfig (TIM2,0x7,TIM_LOW,0x7,TIM_HIGH); //square wave output
    第一句话已经实现了312khz,那么第二句里面用pwm产生了一个周期为0x7的方波,不是重复了么?
    另外,能讲讲0x7这个周期的方波的频率是多少?怎么计算的阿?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

19
 

关于定时器

TIM_PrescalerConfig(TIM2,10 ); //24Mhz/77 = 312KHz
这一行代码是说明每1/312000s中计数一次。
TIM_PWMOModeConfig(TIM2,0x7,TIM_LOW,0x7,TIM_HIGH); //square wave output
第二个参数0x7表示电平为TIM_LOW的宽度为7个计数。第四个参数表示脉冲的周期的长度的计数。这说明第四个参数必须大于第二个参数,如果第四个参数必须等于第二个参数,则会产生一个脉宽为第二个参数的方波,即50%的PWM。故PWM的周期为312/2=156Khz
能讲讲0x7这个周期的方波的频率是怎么计算,请看参考手册定时器一节。


另外说明一下:我没有QQ(这个东西要花钱!)、MSN(公司里不允许用),俺也没有时间去用这些东西。
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

20
 

谢谢 ST_ARM

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表