ketose 发表于 2018-4-14 23:47

【新版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>

jinglixixi 发表于 2018-4-16 13:44

不妨在台式机上用串口助手试一试,一端接USB的虚拟串口,一端接台式机自身的串口。
页: [1]
查看完整版本: 【新版CH554评测DIY】求附送的USB转串口的原理图