yangsf 发表于 2012-10-6 15:47:13

自制atmega328p板子串口发送任何数据,另一端只能接收到0

详细情况描述:
1,328P与PC串口相连,发送任何数据,PC都只能接收到0
2,328P与128串口TTL直连,也只能接收到0
3,328PTXD与RXD自环连接,发送数据,接收时判断是否还是原数据,发现能够正常接收
4,以上1和2是不直接共地的情况,如果直接共地,PC和128好像都收不到任何数据了

排除硬件故障:串口确实工作了,由上3可知,别自制了一个测量笔,发现串口引脚确实拉高了;
排除初始化故障:由上3可知,确实是初始化成功了,不然自环不可能接收成功

实在找不到原因,折腾两天,代码,硬件都检测了,也做了很多测试。只能求助各位!

guer 发表于 2012-10-6 15:57:25

1、2两种情况该不是TXD与RXD线接反了吧!

yangsf 发表于 2012-10-6 15:58:55

http://letsmakerobots.com/files/userpics/u2691/ArduinoFuses2.jpg
熔丝位设置如上图,依照arduino板子设的,除了BOOTRST没check。
关于晶振:板子用的外部晶振16Mhz,熔丝位CKSEL选择的是最后一个(这个不是太确定,但是比照arduino设的,应该问题不大)

albert_w 发表于 2012-10-6 16:23:48

上示波器或者逻辑分析仪器啊,感觉波特率错了。
还有不共地怎么连接的? 串口可没这个连接法。
怎么又在连接ttl又在连接232呢?

yurinacn 发表于 2012-10-6 17:43:00

是不是模式配置错了,成了同步串行口模式了?

yangsf 发表于 2012-10-6 18:36:45

guer 发表于 2012-10-6 15:57 static/image/common/back.gif
1、2两种情况该不是TXD与RXD线接反了吧!

不是,这个真不是

yangsf 发表于 2012-10-6 18:40:51

albert_w 发表于 2012-10-6 16:23 static/image/common/back.gif
上示波器或者逻辑分析仪器啊,感觉波特率错了。
还有不共地怎么连接的? 串口可没这个连接法。
怎么又在连 ...

没有设备啊。串口不单独共地时,还能接收到0,单独共地就收不到东西了。TTL是说328P和128TXDRXD直连,232是与PC连。

yangsf 发表于 2012-10-6 18:44:10

yurinacn 发表于 2012-10-6 17:43 static/image/common/back.gif
是不是模式配置错了,成了同步串行口模式了?

同步串行口模式?我查一下,不太懂。初始化代码是按照datasheet上来的,和128基本一样,问题不大。

yangsf 发表于 2012-10-6 18:48:44

albert_w 发表于 2012-10-6 16:23 static/image/common/back.gif
上示波器或者逻辑分析仪器啊,感觉波特率错了。
还有不共地怎么连接的? 串口可没这个连接法。
怎么又在连 ...

波特率这块倒有可能,虽然波特率公式16000000/16/9600-1没有问题,但不知道熔丝位设的外部时钟对不对。
地这块儿比较麻烦,我的328p板子电源是定制的220交流转9V交流然后整流出来的,地是板子自己的地,没和大地连。
也很有可能是地的原因,因为一共地就接收不到任何信息这一现象很奇怪。

yangsf 发表于 2012-10-7 14:57:42

已解决,原因可能有2:1,熔丝位中对外部晶振的选择没设置好。2,共地没共好,重新选了一个共地点
页: [1]
查看完整版本: 自制atmega328p板子串口发送任何数据,另一端只能接收到0