打印

18f14k50与18f45j50串口问题

[复制链接]
2092|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
453369672|  楼主 | 2011-8-24 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用串口通信时发现18f14k50发送八位数据+1位停止位;18f45j50发送八位数据+2位1
不知45j50后面的两个1都是停止位吗?看了半天也没有找到相关设置停止位的寄存器,寻求高手解答。。。
沙发
yewuyi| | 2011-8-24 17:47 | 只看该作者
可能另一位是校验位吧!?

你确定没有弄错 ?

使用特权

评论回复
板凳
453369672|  楼主 | 2011-8-25 08:42 | 只看该作者
2# yewuyi
没有,所有的配置我都看了,没有校验位的设置。

使用特权

评论回复
地板
251566208| | 2011-8-25 09:30 | 只看该作者
20.2 EUSART 异步模式
通过将SYNC 位(TXSTAx<4>)清零可选择异步工作
模式。在此模式下, EUSART 使用标准的不归零
(Non-Return-to-Zero,NRZ)格式(1 个起始位,8 个
或9 个数据位, 1 个停止位)。
是不是配置成了9位数据格式,自己不知道

使用特权

评论回复
5
453369672|  楼主 | 2011-8-25 10:29 | 只看该作者
4# 251566208
没有,配置的就是8位数据格式。
TXSTA1bits.SYNC = 0;
// Asynchronous mode

TXSTA1bits.TX9 = 0;
// 8位数据发送

TXSTA1bits.SENDB = 0;
// 下次发送时发送同步间隔符

TXSTA1bits.BRGH = 1;
// High Speed

TXSTA1bits.TXEN = 1;
// 使能发送



RCSTA1bits.RX9 = 0;
// 8位数据接收

RCSTA1bits.CREN = 1;
// 连续接收器使能 异步模式

使用特权

评论回复
6
251566208| | 2011-8-25 10:40 | 只看该作者
为什么要同步间隔符?

使用特权

评论回复
7
251566208| | 2011-8-25 10:48 | 只看该作者
同步间隔符是在LIN总线时才会用 到
如果没有做LIN总线,最好不要用

使用特权

评论回复
8
453369672|  楼主 | 2011-8-25 13:36 | 只看该作者
7# 251566208
不发同步间隔符也是这种情况

使用特权

评论回复
9
yewuyi| | 2011-8-25 13:52 | 只看该作者
1、停止位不需要设置,只要启动了串口模块通信,只自动添加的。
2、18f45j50发送八位数据+2位1,你这2位1是什么设置出来的 ?
3、在9位数据位模式下,一个数据帧是11个位,在8位数据位模式下,一个数据帧是10个位,第9位可以用做奇偶校验位,也可以做为主从地址位,也可以作为第9位数据位,看你自己怎么用了

使用特权

评论回复
10
453369672|  楼主 | 2011-8-25 17:08 | 只看该作者
9# yewuyi
我也搞不清楚这两位1怎么来的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

38

帖子

0

粉丝