找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3152|回复: 5
打印 上一主题 下一主题
收起左侧

单片机uart和spi同时使用的问题

[复制链接]
跳转到指定楼层
楼主
ID:645543 发表于 2020-7-5 19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rc522的spi初始化 (使用的是定时计数器T1)
    TMOD = 0x21;                // T1设置为8位自动重装载定时器                        
    SCON = 0x50;                // 串口工作在模式1:8位UART波特率可变,且禁止接收(0x40)
    TH1 = 0xE8;                        // 单片机小精灵V1.3算出的2400波特率且波特率  11.0592MHZ
    TL1 = TH1;                        // 加倍时的定时器设置值。
    PCON = 0x80;                // 设置为波特率加倍
    EA = 1;                                // 开总中断
    //ES = 1;                            // 开串口中断
   TR1 = 1;                    // 定时器1开启计数
rc522的程序已经调试好了,as608指纹模块的程序也调试好了,但是两个合并起来就出问题。
在rc522的程序上添加as608的初始化(使用的是定时计数器T2)
    //SCON=0x50;   //UART方式1:8位UART;   REN=1:允许接收
    T2CON=0x30;   //SMOD=0:波特率不加倍  
    TH2=0xFF;
    TL2=0xDC;        
    RCAP2H=TH2;
    RCAP2L=TL2;
    //  EA=1;
    TR2=1;
添进去rc522的串口就不正常了,读取的内容就不对,本来是四位,现在只读出来一位,内容还不对。
感觉是这两个初始化会冲突,各位帮看看吧。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:764088 发表于 2020-7-6 08:42 | 只看该作者
SPI uart 都是串行慢速通讯,尽量用中断或DMA来接收数据,注意不要在中断中处理接收数据,放在缓冲区中,空闲时处理解析。
回复

使用道具 举报

板凳
ID:636538 发表于 2020-7-6 09:04 | 只看该作者
//ES = 1;                            // 开串口中断为什么屏蔽串口中断,为什么TMOD=0X21,定时器0用来做什么了。写了定时器0,为什么没有相关的设置,这么看你的初始化设置,没什么大问题,但是其他不好说,
你单独使用定时器2调试过吗
回复

使用道具 举报

地板
ID:645543 发表于 2020-7-6 10:34 | 只看该作者
SKYLAR123 发表于 2020-7-6 09:04
//ES = 1;                            // 开串口中断为什么屏蔽串口中断,为什么TMOD=0X21,定时器0用来做 ...

T0给按键做中断了,T1和T2没有用中断,直接把子程序放在while1里了
回复

使用道具 举报

5#
ID:799069 发表于 2020-7-7 16:23 | 只看该作者
用89c52分别接了rc522射频识别模块和as608指纹识别模块,射频用的是p2口spi通信,指纹用的p30和p31的uart通信。两个模块独立的时候调试都好了,但是两个模块放到一起,就不行,不知道是不是89c52同时用spi和uart会有冲突。
回复

使用道具 举报

6#
ID:645543 发表于 2020-7-7 16:32 | 只看该作者
本来是rfid波特率2400,指纹9600合并起来不能用,后来我把rfid也改成9600就能用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表