hujj 发表于 2020-10-17 17:33

【CH579M-R1】+本次评测活动的总结

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">首先感谢沁恒电子和EEWORLD提供了这次评测的机会。从九月上旬收到【CH579M-R1】开发板开始评测算起,到昨天止大约40多天时间,我对开发板的评测工作基本上告一段落。本次评测的第一步当然还是建立开发平台,我使用KIEL5编译工具,在升级了厂家提供的pack之后,顺利地编译了厂家提供的例程,开始使用USB方式进行下载烧录,在安装CH340驱动时遇到了一点麻烦,几经周折才发现是USB转TTL模块的问题,换另一个模块测试就顺利解决了(相关的帖子链接:https://bbs.eeworld.com.cn/thread-1140516-1-1.html)。后来才发现用串口方式下载烧录更方便快捷,之后就一直通过串口方式下载烧录。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">按照惯例,评测工作从点灯开始,在编译了厂家的范例并下载烧录到开发板上,顺利地点亮了LED,然后再进一步参照论坛上评测帖子的代码,顺利地启用PWM实现了呼吸灯效果,相关的帖子链接:https://bbs.eeworld.com.cn/thread-1140803-1-1.html。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">最初我是在主循环中用计数的方式实现延时,第二步测试时就准备启用Systick来实现延时功能,可我配置好之后却不知道如何启用,在范例中没有找到相应的代码,数据手册中也没有找到启用的方法,多次尝试后仍无结果,最后只好启用定时器1来进行延时,并通过计时变量实现每秒执行一次的控制。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">接着我进行了串口通讯的测试,使用范例代码很容易就完成了通过串口调试助手向开发板发送字符并接收返回字符的实验。通过测试,发现在轮询方式下,字符串过长时会发生分截现象,返回的字符串不完整,而在中断方式下,串口调试助手就能接收完整的字符串(我测试的字符串长度在20个字节内)。但在之后试图在LCD屏幕上显示接收到的字符串时却遇到了问题,每次只显示7个字节,长度超过7个字节的字符串只显示被7整除后余下的字符,也许是串口中断处理时每次按7个字节进行处理的缘故。我试图将其修改为16个字节,但未能如愿,至今仍未完成测试,相关的帖子链接:https://bbs.eeworld.com.cn/thread-1143654-1-1.html</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">为了方便观看测试效果,我移植了LCD5110显示屏的驱动程序,这个移植过程比较顺利,利用逻辑分析仪抓取SPI通讯的时序,将延时调整好,LCD屏幕就顺利地点亮了,相关的帖子链接:https://bbs.eeworld.com.cn/thread-1140926-1-1.html。随后还测试了LCD19264的屏幕,用这块LCD屏幕可以显示更多的内容,更方便评测工作,这个驱动代码的移植过程同样没费什么周折,相关的帖子链接:https://bbs.eeworld.com.cn/thread-1143464-1-1.html。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">在测试驱动DS1307日历模块时,我没有找到相应的I2C通讯范例代码,于是只好用移植I2C通讯底层代码。但在测试过程中因为一个细节造成读不到数据,而从逻辑分析仪抓取的时序图上明明有DS1307模块发出的数据。最后查检到原因就是判断SDA引脚电平出了问题,我之前一直都是用if(1 == SDA_X)判断,但测试时发现即使引脚高电平也判断不出,最后改成if(SDA_X)才行,相关帖子的链接:https://bbs.eeworld.com.cn/thread-1142089-1-1.html。但在后来的测试中我改回if(1 == SDA_X)却又可以了,对于这个奇怪的现象我没有去深究。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">我同时还在评测南芯公司的SC8905电源控制板,这个电源控制板也是I2C通讯的,我顺带用CH579M开发板进行了测试,很顺利地实现了对这块电源控制板的程序控制,相关帖子的链接:https://bbs.eeworld.com.cn/thread-1142431-1-1.html。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">本次花费时间最多的评测是驱动电子罗盘LSM303DLH模块,这是我这次评测项目的重点,是准备给自制智能小车定向用的。但测试工作很不顺利,从开始尝试到基本驱动成功用了10多天时间,大约占整个评测时间的三分之一。期间我还几度准备放弃测试(详见帖子链接https://bbs.eeworld.com.cn/thread-1144794-1-1.html),好在每次几乎要放弃时又忽然看到曙光。在论坛的几位版主帮助下,最终于昨天才基本完成,顺利地读取到模块的三轴数据。驱动模块不顺利的主要原因竟然是LSM303DLH模块芯片的问题,芯片经常不响应I2C通讯,需要用电吹风稍微加热,芯片的I2C才能正常工作。之所以说基本完成,是因为从磁场X、Y轴数据转换到角度数据这块尚未完成,商家提供的范例正好缺少这个函数的代码,所以目前只能显示磁场传感器和运动传感器的X、Y、Z轴的6组数据,剩余的问题留待以后逐步解决。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt"><span style="font-family:宋体">去年我曾有幸参加过沁恒电子8位机的CH549开发板的评测过活动,通过这次对32位机的CH579评测,我对沁恒电子的MCU产品有了进一步的了解。从我个人的感觉来看,与传统STM系列产品相比较,CH系列单片机的开发使用相对会更容易一些,首先是GPIO的配置省略了开启时钟的过程,简化了代码,其次在对GPIO配置和操作时,用简单直观的宏定义代替STM系列中复杂的库函数,初学者更容易理解。我觉得国内的公司就应该这样走自己的路,有自己的特色,而不是跟在人家的后面模仿,走人家的老路。当然在沁恒电子的MCU产品也有不足的地方,主要是参考资料较少,初次接触者遇到问题时在论坛中求助也比较难以得到及时有效的解决,不象STM系列的产品,常用的应用范例网上搜索一大把。当然,作为后起之秀的国内厂家,市场份额的扩大需要一个过程,需要大家的不懈努力。最后希望沁恒电子的产品越做越好,让我们有更多的选择余地。</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-size:12.0pt"><span style="font-family:宋体">&nbsp; &nbsp; 下面是评测过程的动画,开发板右上角的两个LED,右边的是按照1秒的频率闪烁,左边的是按照大约1秒多的时间以呼吸灯的方式点亮。LAN接口上的绿、黄也周期性地点亮和熄灭。扩展板上除了有LCD显示屏外,还有DS1307日历模块和LSM303DLH电子罗盘模块。LCD屏幕末行右边显示的是日期和时间,单片机每分钟读取 一次DS1307日历模块的数据进行更新,秒计数则由定时器1提供基数,在主循环中计算获得。屏幕中间部分显示从电子罗盘读取的数据,每秒更新一次,前三组是磁场传感器数据,后三组是运动传感器数据,分别按照合并的数值、高位寄存器数值和低位寄存器数值排列。</span></span></span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify">&nbsp;</p>

<p style="text-align:justify">&nbsp;</p>

<p style="text-align:justify">&nbsp;</p>

hujj 发表于 2020-10-18 15:33

<p>&nbsp; 今天查看坛友yanxinboy的帖子才发现Systick可以直接在main函数中配置,只需要一句SysTick_Config()就行,我照葫芦画瓢,将秒计数由定时器1改为SysTick,运行通过了。&nbsp; &nbsp;</p>

hujj 发表于 2020-10-18 17:08

<p>&nbsp; &nbsp; 下午按照damiaa版主的提示,将原串口中断触发字符数改为1,然后用环形缓冲区来保存串口接收的数据,可以接收到完整的数据了。</p>

<p></p>

okhxyyo 发表于 2020-10-19 10:43

<p><a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html" target="_blank">沁恒CH579M-R1开发板测评</a></p>

<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html">https://bbs.eeworld.com.cn/thread-1140005-1-1.html</a></p>

freebsder 发表于 2020-10-19 23:10

<p>加油</p>
页: [1]
查看完整版本: 【CH579M-R1】+本次评测活动的总结