打印
[51单片机]

关于c8051f560单片机UART串口通信的几个小疑问

[复制链接]
996|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kingweio|  楼主 | 2017-3-27 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人单片机菜鸟,之前从来没有接触锅,毕业设计要测试C8051F560上的adc的静态参数,遇到了两个问题:
1.设置了采样率为10k( TMR2RL  = 65535 - (SYSCLK / 10000); // Init reload value for 100uS),
adc是12位的,
设置波特率为115200(#define BAUDRATE 115200 // Baud rate of UART in bps),
数据位8位,无奇偶校验,1停止位,无flow control。(On the PC, open HyperTerminal (or any other terminal program) and connect to the USB port (virtual com port) at <BAUDRATE>, 8 data bits, no parity,1 stop bit and no flow control.)
但是根据测得的数据连接画图来看,输入正弦信号频率为100Hz时,采样点数只有20个左右,也就是采样频率只有20*100=2000Hz,当我把波特率设置为256000时,相应的采样点数会增加,也就是说采样频率会增加,想问下为什么会出现这种情况?按道理波特率为115200时,每秒传输的字符数为115200/(8+1)=12800,大于10k的采样率,应该足够传输10k个数据才对啊。那为什么波特率为115200时,只能传输2000个数据?波特率提高时为什么相应测得的采样点数也会提高?

2.还有一个小疑问,就是adc明明是12位的,为什么进行串口设置的时候数据位是8位?8位的数据范围是0-255,而12位adc的数据范围是0-4095,为什么数据位8位就够了?

相关帖子

沙发
linqing171| | 2017-3-28 11:08 | 只看该作者
大师好,你是不是没有等到串口发送结束,采完一个发一个?你发的时候ADC还在采样么?
你的ADC采一次样需要多少个时钟?15拍还是20拍?
串口有几位和ADC有几位有什么关系? 如果你精度低你直接发高8位,如果你精度高你可以分两次发。

为什么企鹅不会飞? 燕子春天从南方回来,是因为北方夜晚变短了么,那去南方的时候是因为北方昆虫少了,为什么燕子不吃草种子? 楼主的问题让我看到了好多童趣。

使用特权

评论回复
板凳
kingweio|  楼主 | 2017-3-28 22:28 | 只看该作者
linqing171 发表于 2017-3-28 11:08
大师好,你是不是没有等到串口发送结束,采完一个发一个?你发的时候ADC还在采样么?
你的ADC采一次样需要 ...

额,第二个问题我已经懂了,第一个问题还是有点不懂,有人说是因为print函数打印的时候打印的ascii码,一个ascii码有8位,所以导致打印速度变慢,测得的采样率也变慢了,但是按照这种理论,如果我提高波特率为原来的5倍,即115200*5,就可以测得采样率为10k,然而我今天试了下,波特率提高五倍测得的采样率并不是10k,这就让我很疑惑了。求大神解答,我是单片机菜鸟

使用特权

评论回复
地板
ff8zgs| | 2017-3-29 11:40 | 只看该作者
你难道没看见ADC的数据寄存器是16位分两个字节存放吗??、那么串口怎么处理应该懂了把

使用特权

评论回复
5
CHLDZKJ| | 2017-3-29 17:22 | 只看该作者
我这个菜鸟也学习一下

亿配芯  YIBEIIC.COM  一家专业做电子元器件配单的商城平台     
还有很多原装正品开发板等你来挖掘哦,有图有价格。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝