标题: 单片机uart和spi同时使用的问题 [打印本页]

作者: hululu2333    时间: 2020-7-5 19:33
标题: 单片机uart和spi同时使用的问题
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的串口就不正常了,读取的内容就不对,本来是四位,现在只读出来一位,内容还不对。
感觉是这两个初始化会冲突,各位帮看看吧。


作者: MikeCai    时间: 2020-7-6 08:42
SPI uart 都是串行慢速通讯,尽量用中断或DMA来接收数据,注意不要在中断中处理接收数据,放在缓冲区中,空闲时处理解析。
作者: SKYLAR123    时间: 2020-7-6 09:04
//ES = 1;                            // 开串口中断为什么屏蔽串口中断,为什么TMOD=0X21,定时器0用来做什么了。写了定时器0,为什么没有相关的设置,这么看你的初始化设置,没什么大问题,但是其他不好说,
你单独使用定时器2调试过吗
作者: hululu2333    时间: 2020-7-6 10:34
SKYLAR123 发表于 2020-7-6 09:04
//ES = 1;                            // 开串口中断为什么屏蔽串口中断,为什么TMOD=0X21,定时器0用来做 ...

T0给按键做中断了,T1和T2没有用中断,直接把子程序放在while1里了
作者: bsm    时间: 2020-7-7 16:23
用89c52分别接了rc522射频识别模块和as608指纹识别模块,射频用的是p2口spi通信,指纹用的p30和p31的uart通信。两个模块独立的时候调试都好了,但是两个模块放到一起,就不行,不知道是不是89c52同时用spi和uart会有冲突。
作者: hululu2333    时间: 2020-7-7 16:32
本来是rfid波特率2400,指纹9600合并起来不能用,后来我把rfid也改成9600就能用了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1