查看: 593|回复: 10

[未解决] arduinoUNO 用两个PIN控制一个spi设备(RFID)

[复制链接]
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-10-1 21:00 | 显示全部楼层 |阅读模式
    我已经测试,MRFC522的chipSelectPin 是正常的。当pin为低电平时可以正enable并都读写数据。

    目前的问题是,我需要用两个接口来控制他。当两个接口都为低电平时,MFRC522才ENABLE。只要任意个接口为高电平,MFRC522都为不可用。

    所以我想是用二极管做个或门电路。如图所示。
    实际上的确P11和P12任意一个或两个为高电平时,输出高电平;两个都为低电平时,输出低电平。
    已经修改了RFID.cpp的代码:
    void RFID::setmode(boolean isHigh){
      if(isHigh){
         digitalWrite(11, HIGH);
         digitalWrite(12, HIGH);
      }else{
         digitalWrite(11, LOW);
         digitalWrite(12, LOW);
      }
    }

    但是接上MRFC522,无法进行读写。
    烦请大神帮忙看看,问题出在哪里?


    捕获.PNG
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2020-10-1 21:49 | 显示全部楼层
    SS下拉电阻呢?
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-10-1 22:49 | 显示全部楼层

    谢谢,我接了个1K电阻,可以用了!!
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-10-20 21:47 | 显示全部楼层
    本帖最后由 vvind2008 于 2020-10-20 22:47 编辑

    大哥,补充点问题。上面的问题,当我接一个SS时,用1K或4.7K的下拉都是很OK的。
    但当我把二极管或门电路改为4*4矩阵,以便用8个PIN控制16个SS。这时就有点行不通了。
    我用1K到10K的下拉都不行。不知道是不是多个下拉共地的缘故。

    Schematic_矩阵电路_2020-10-20_22-41-41.png
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2020-10-20 22:46 | 显示全部楼层
    vvind2008 发表于 2020-10-20 21:47
    大哥,补充点问题。上面的问题,当我接一个SS时,用1K或4.7K的下拉都是很OK的。
    但当我把二极管或门电路 ...

    应该和扫描时序有关。一次选通单个 SS=LOW 应该可以的
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-10-20 23:00 | 显示全部楼层
    本帖最后由 vvind2008 于 2020-10-20 23:11 编辑
    t3486784401 发表于 2020-10-20 22:46
    应该和扫描时序有关。一次选通单个 SS=LOW 应该可以的

    除了需要读写的SS对应的行和列设为LOW以外,其他行列都是HIGH。不加负载时检查电平也是OK的。
    直接一个负载没问题,可以读写,再加一个就不行了。就是说我程序不改,一直两个负载轮流切换读写。只插任意一个都可以读写,两个同时插上就不行。

    我对下拉那一段不太懂,而且读写时电平多次切换,用我几十块钱的万用表实在测不准。
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2020-10-20 23:17 | 显示全部楼层
    vvind2008 发表于 2020-10-20 23:00
    除了需要读写的SS对应的行和列设为LOW以外,其他行列都是HIGH。不加负载时检查电平也是OK的。
    直接一个负 ...

    SPI 端口不一定支持多从机模式,需要器件配合。

    这个情况,很可能是 MISO 线在 SS 无效时,没有释放电平,导致其他 SPI 从机无法通信。
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-10-20 23:27 | 显示全部楼层
    t3486784401 发表于 2020-10-20 23:17
    SPI 端口不一定支持多从机模式,需要器件配合。

    这个情况,很可能是 MISO 线在 SS 无效时,没有释放电平 ...

    我试过不用或门,直接用两个pin口接SS,MISO等其他线共用,是可以实现轮流读写的。
    您说的这种情况,我没想到,有没有什么方法可以验证一下?
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2020-10-20 23:45 | 显示全部楼层
    vvind2008 发表于 2020-10-20 23:27
    我试过不用或门,直接用两个pin口接SS,MISO等其他线共用,是可以实现轮流读写的。
    您说的这种情况,我没 ...

    禁用一片 RC522(使 SS=H),测试 MISO 引脚电压:

    1. 如果 =0V,搞个电流表串 1k 电阻,测试 MISO-VCC 之间的电流,能接近 -5mA 就判定 MISO 未释放;
    2. 如果 =5V,同样电流表串 1k 电阻,测试 MISO-GND 之间的电流,能接近 +5mA 判定 MISO 未释放;
    3. 如果 MISO 电压是其他数值,或者电流表测不到电流,判定 MISO 已释放。

    目测你能测出 MISO 未释放的情况
  • TA的每日心情
    郁闷
    2020-10-1 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-10-21 20:33 | 显示全部楼层
    t3486784401 发表于 2020-10-20 23:45
    禁用一片 RC522(使 SS=H),测试 MISO 引脚电压:

    1. 如果 =0V,搞个电流表串 1k 电阻,测试 MISO-VCC  ...

    谢谢,我需要搭建测试下。
    我理解一下您的思路:
    当RC522禁用的时候,MISO内部应该高阻抗无电流通过。否则其未彻底释放。
    所以连接AB两个模块,保持A禁用,测量在B禁用及读写等各种情况下A的MISO的电流值。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    关于使用DHT11库编译错误的补救资源
    关于使用DHT11库编译错误
    有些小伙伴使用从ArduinoIDE的库管理下载的DHT11库的时候可能会遇到编译错误的问题,
    我的ESP8266继电器也不工作
    我的ESP8266继电器也不工
    代码是下的某音上的爆改车间主任控制灯泡的那一集 #define BLINKER_WIFI #define BLIN
    各位大佬还请帮忙一看
    各位大佬还请帮忙一看
    最近在用Arduino读取一个惯导传感器数据,已经通过USB—TTL在电脑端验证过传感器是可
    arduinoUNO 用两个PIN控制一个spi设备(RFID)
    arduinoUNO 用两个PIN控制
    我已经测试,MRFC522的chipSelectPin 是正常的。当pin为低电平时可以正enable并都读写
    Arduino物联网开发实例教程
    Arduino物联网开发实例教
    [md] **blinker用户交流群 301438087 (仅限github已Star的用户加群)** ## bli
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表