(搞定)请问各位大虾,你们的ch375串口模式是直接接到单片机的串口上的吗?

请问各位大虾,你们的ch375串口模式是直接接到单片机的串口上的吗? 我的是430的单片机,直接接到375上好像不能工作,然后我在两个串口中间加了两个232 ,在430rx端用示波器看到了发06返回来的数据,但是430就是进不了接收中断。 我430可以给pc机发数据,接数据,波特率为9600。 pc机可以给ch375发和接收,但是430和375连在一块就不行了。430进不了中断。 是波特率的问题吗?? 我的430是6M晶振。分频系数为 UBR00 = 0x71; //设置波特率为9600 UBR10 = 0x02; UMCTL0 = 0x11;

直接430的rx与375的tx连接会把375的tx拉低,不知道各位大侠是怎么把375和单片机直接连接的啊??

谢谢

你用430和375用来做什么?375和单片机串口连接只能是做主机,做设备的话,不能串口连接,同时,在做主机的时候,串口发送命令的时候,参考下面的例子: void xWriteCH375Cmd( UINT8 mCmd ) { /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ UTCTL0|=TXWAKE; // 发送地址位 TXBUF0=mCmd; ui=0; while(ui==0) { ui=U0TCTL; ui&=BIT0;}; } void xWriteCH375Data( UINT8 mData ) { /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ TXBUF0=mData; ui=0; while(ui==0) { ui=U0TCTL; ui&=BIT0;}; }

UINT8 xReadCH375Data( void ) { /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ ui=0; while(ui==0) { ui=IFG1; ui&=URXIFG0;}; return(RXBUF0); }


我的就是用的是主,问题是我用单片机发了0x06 再发0x55 我用示波器在430的rxd端口看到了0xAA啊,但是就是进不了430的中断,这个可能是什么问题呢,开始怀疑波特率,但是我发出去的命令,375回了数据了啊,波特率应该没问题才对啊。我没有调函数,只是发了那个check命令,看看375能不能工作,其实375是能工作的,但是就是在430上不能工作


我发出去的是9位但是接收到的却是10位所以中断程序进不了中断,


应该不会啊,在使用430单片机串口的时候,实际上你只是读取中断缓冲区里面的数据而已啊,那你用查询看下可以不可以读到数据呢??


恩 好的 我试试,但是我确实是测量那个375输出的是10位 不是9位。我试试查询方式先


读不到,如果在运行的时候改串口控制字,把那个接收的改为10位就偶尔能把数据读回来,但是这个只能调试,而且是偶尔能读到。你们测试了你们的那个375发出来的数据确认是9位吗????


也就是说你现在的串口的标志寄存器没有变化了??那你怎么确定你的数据是发下去而且收到了数据,如果是收到了数据的话,而串口寄存器没有发生变化的话,那就说明你的单片机的设置或者单片机本身有问题


我的单片机可以接收到pc机给发的数据, 串口应该是10位 分别是:起始位,数据位,停止位。 所以应该是这样的。可能使我的单片机的问题,我再测试。

我是这样测量的。我的数据是通过两片232在中间倒了一次数据,我在倒数据的中间把从375发回来的数据引了跟线给pc,在串口调试助手里面看到了返回的数据。

430串口中断就是没进入,所以我现在也怀疑是我的430的问题了。但是能收到pc机发的数据,这个很奇怪。


这个是错误的,430有起始位,也有停止位,但是375除了起始位和停止位之外还有一位,不知道是什么。既不是校验位,也不是地址位,我试了如果我设置发送的是校验位或者地址位,就想375一样,但是375就不能返回数据了。


搞定了,是430的那个串口没有设置好,初始化时没有加那个MM。 谢谢hcn的帮助


只有登录才能回复,可以选择微信账号登录