【新版CH554评测DIY】求附送的USB转串口的原理图
<div class='showpostmsg'>收到这个开发板有一段时间了,一直出差没机坐评测,今天终于出差回来,就先来做个简单的测试。既然是51的内核,其实是可以直接使用<reg52.h>这个头文件的。但是ch554做了很多扩展,多了很多的外围设备和很多的寄存器。为了方便使用官方定义好的头文件<ch554.h>,这里面已经定义好了很多扩展寄存器,拿 来直接用就可以了。话不多说,从最简简单单的点灯开始。
先看LED的原理图部分:
原理图上两个LED分别使用P16和P17.
我们按传统的51编写代码,我们就可以用下面的代码来实现。
sbit P17 = P1^7;
void Delay_us(UINT16 n);
void Delay_ms(UINT16 n);
#define LED1ON P16=1
#define LED1OFF P16=0
#define LED2ON P17=1
#define LED2OFF P17=0
void main()
{
while(1)
{
LED1ON;
Delay_ms(1000);
LED2ON;
Delay_ms(1000);
LED1OFF;
Delay_ms(1000);
LED2OFF;
Delay_ms(1000);
}
}
把上面的代码编译后,烧写至单片机里。运行,两个LED开始工作,只是亮度明显比PWR D1这个LED的亮度要暗一些。
查看手册,把P1口设置成推挽输出模式,具有对称驱动能力,可以输出或者吸收较大电流。
改进代码如下:
#include "ch554.h"
sbit P16 = P1^6;
sbit P17 = P1^7;
void Init_Clock();
void Init_GPIO();
void Delay_us(UINT16 n);
void Delay_ms(UINT16 n);
#define LED1ON P16=1
#define LED1OFF P16=0
#define LED2ON P17=1
#define LED2OFF P17=0
void main()
{
Init_Clock();
Init_GPIO();
while(1)
{
LED1ON;
Delay_ms(1000);
LED2ON;
Delay_ms(1000);
LED1OFF;
Delay_ms(1000);
LED2OFF;
Delay_ms(1000);
}
}
/**
* @briefInitialization system clock to 24MHz.
* @paramNone
* @retval None
*/
void Init_Clock()
{
SAFE_MOD = 0x55;
SAFE_MOD = 0xAA;
CLOCK_CFG = CLOCK_CFG & ~ MASK_SYS_CK_SEL | 0x06;
}
/**
* @briefInitialization P1 Port.
* @paramNone
* @retval None
*/
void Init_GPIO()
{
//Set P1 port push pull mode.
P1_MOD_OC = 0;
//Set P1 port output
P1_DIR_PU = 0xFF;
}
/**
* @briefMicrosecond delay.
* @paramDelayed n microseconds
* @retval None
*/
void Delay_us(UINT16 n)
{
while(n)
{
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
--n;
}
}
/**
* @briefMillisecond delay.
* @paramDelay n Milliseconds
* @retval None
*/
void Delay_ms(UINT16 n)
{
while(n)
{
Delay_us(1000);
--n;
}
}
至些效果达到。
下面是一些问题:开发板附带了一个USB转串口工具,我使用JP1的Tx,Rx操作我的PN532开发板时,一直提示错,
后来使用逻辑分析仪查看Tx上的数据,抓到的数据显示frame error.
这个问题一直解决不了
@沁恒USB单片机,能不能把这个转换器的原理图发一份上来。
此内容由EEWORLD论坛网友ketose原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 不妨在台式机上用串口助手试一试,一端接USB的虚拟串口,一端接台式机自身的串口。
页:
[1]