导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]XS1_TIMER_MHZ值[liufengzhong]

 *第63843篇: [转帖]XS1_TIMER_MHZ值

  
楼 主:liufengzhong 2014年8月8日15:34
 [转帖]XS1_TIMER_MHZ值
我一直在工作的一些代码使用startKIT MIDI接口,并遵循所有相关的串行接口的文档。所有这些是不工作的,所以我想简单的UART的例子,首先是back2back例子。这个工作是连续的,但没有独立的。

看着与存储“的范围传输的数据,我终于发现,数据率为20%左右速度太快,并在工作界面纠正这结果。

应该采取什么XS1_TIMER_MHZ变量,当它返回的值为100?如果它的定义是错的,这样我可以改正它,因为我会写一个运行在固定采样率的代码,我想确保我的代码将运行在预期的硬件目标而无需修改。


回答:

嗨。XMOS默认的参考时钟为100MHz,但也基于供给到组件和PLL设置的外部时钟源。500 MHz的版本能够在这个时钟推高至125 MHz的正确设置。注意到这些值,你的MIDI通信关闭的原因很可能是参考时钟没有提供正确的解决方案要准确命中31250个基点。我的建议是审查在GitHub上的multi_uart代码,提供的1.8432Mhz(在8 UART xslice kie中提供),但另外一个外部时钟源成一个自由的GPIO引脚。UART的代码,然后使用这个产业STD时钟源帧的PC标准波特率(即115.2,57.6K等)。然后再次的1.8432Mhz这个值可能是不是MIDI使用的最合适的选择。从网上,似乎对你的项目的最佳选择为3Mhz。所以,如果你提供3.3伏的CMOS外部时钟源@ 3Mhz(50ppm或更高),成GPIO引脚+使用GitHub上发布代码,你应该完美的打击你的MIDI速度。
出于某些原因,无法粘贴一些参考上述资料。这种反馈是读了关于这个主题的悬而未决的项目只有那么请你为你的检讨是相同的。一定要更改代码,以反映GPIO引脚用于外部时钟源。总结是,使用外部时钟源,你应该能够帧字面上任何波特率(您XMOS的速度范围内),这使得这个非常非常灵活。如果你想获得真正淫,可以考虑应用一个外部I2C锁相环(见SILABS或类似),我们正在申请到我们的项目中。确认使用固定3 MHz的时钟源后,会推荐这样做。
  <更新的一种改进的时钟值>  
很抱歉,做了一些计算,得出的结论是3 MHz时为外部时钟源的明智值。计算方法如下:
19200 / 1.8432 = X / 3.00; 计算对于x
也就是说,3.00 MHz的外部时钟源,当您使用UART时钟和拨号19.2K的API中,硬件将帧@ 31250个基点。如果你选择使用2.00Mhz,那么你必须选择28800 bps的API中的我不知道在这个时候如果UART代码支持。由于这个原因,考虑到使用3Mhz。


回复:


感谢您的建议,但将MIDI规范的编写,生成从1MHz的参考(实际上500KHz的/ 16)的时钟,所以在定时器的10ns的分辨率应该是足够接近的.....给一点额外的信息,如我设置一个端口为高(或低)为10ns的'罪名'一个具体的数字我觉得输出设置大致为8ns的倍数。这表明,在定时器的时钟频率为100MHz时比(它是一个精确度的问题,不分辨率)的东西等。
所以,使用默认的环境为startKIT(XMOS选择的晶体,并设置PLL配置)中的定​​时器似乎主频周围的120MHz(可以是125MHz的)。XS1_TIMER_MHZ在默认配置的值简化版,反思startKIT PLL的设置,这种差异意味着,对于串行通信(包括UART库)每一个代码示例失败。所有教程指的是100MHz的时钟,并没有startKIT特定的文档表明,这是比任何其他。此板的目的是要介绍的XMOS芯片,并且该定时器的时钟速率是基本的,以怎样的芯片被使用。没有记录,这是一个显著障碍做与董事会任何东西。
XMOS能够确认这个变量设置不正确?我已经浪费2天调试是在ARM M3运行良好的代码,并希望确保定时器是I​​NFACT主频更高的速度在黑板上。如果我不能肯定为什么定时器是错误的我没有选择,只能沟startKIT并返回到ARM。 


回答:

对于Startkit,尝试设置XS1_TIMER_MHZ到125,然后再次测试。

请检查XS-L时钟频率控制文件 - >  见表5(第7页)。尝试使用XN文件来定义所期望的系统频率。
请尝试以下值:
振荡器= 24兆赫(StartKit)
SystemFrequency = 400兆赫
ReferenceFrequency = 100兆赫
留在你的源代码XS1_Timer_MHZ在100MHz。
该simple_UART源代码注意到,100 MHz或倍数参考时钟必须应用。正如前面提到的,使用外部时钟振荡器将是一个有效的变通。然而,从理论上讲,这种新的方法应该没有发挥作用的外部时钟源的需要。贴片时钟振荡器是相当低的成本(约0.50 - 0.60美元的质量5X7的CMOS,50 PPM在1K-5K数量 - 见chinafronter.com)。我们已经用这个供应商约10年都是零瑕疵品。

很想知道,如果XN文件的方法为你的作品。
在紧要关头,你当然可以需要位响应的UART(收发功能)帧所需的波特率。


回复:

感谢您的意见,到目前为止,你说的很对,我可以深入到.xn文件或增加一个外部晶振但唯一缺少的,我问这个问题。
该startKIT硬件手册(第12页,第11节)中明确指出,I / O端口的时钟频率在100MHz。所有代码示例假定的I / O端口,主频为100MHz的所以应该快乐地运行未经修改。该代码示例不工作,所以东西是不正确的。由于这款主板是为了做个简单的介绍XMOS芯片(线索是在名称),真的不应该是一个需要反向工程的配置文件来获得代码正常运行(即使是简单的blinky运行在错误率。 ......)。我曾希望一个XMOS的应用工程师将已经证实的配置不正确,跟我有什么需要改变,并让我对我的方式。这本来是远远快于我的工作,什么可能是错的,并寻找如何解决它,我会一直相信,我的芯片的认识是在一个坚实的基础。
我的猜测是,在I / O是主频为125MHz的,但我找不到在哪里的I / O时钟定义的配置文件(该文件START.xn报告晶振和时钟频率,而不是I / O 1) 。 


 
 
 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]Streaming chanend vs chan 

[下一篇主题]:【新手必看】Linux学习基础!