【问题标题】:Bitbanging a PIO on Coldfire/ucLinux在 Coldfire/ucLinux 上对 PIO 进行 Bitbanging
【发布时间】:2011-01-30 03:36:59
【问题描述】:

问题是:我需要通过 PIO 的 2 个引脚(1 个时钟,1 个数据)对一些硬件进行编程。时序限制很严格——10ms 时钟周期时间。当然,这一切都是在我维护非常高级别的服务(CAN 总线、TCP/IP)的同时。下游单元还通过将配置为输入的 PIO 引脚置为高电平来确认。所以这个循环必须读写。我需要在串行流中发送 16 位。

有没有一种既定的方法来做这种事情,或者我应该让硬件人员添加一个 PIC 或类似的东西。

在这个阶段,我更愿意避免使用 RTAI 扩展等外来元素。我确实曾经看到过对用户模式 ​​IO 的引用,它暗示了一个可能的中断驱动驱动程序,但忘记了它。

欢迎任何指点。

【问题讨论】:

    标签: hardware port uclinux coldfire


    【解决方案1】:

    根据我的经验,最简单的方法是编写内核驱动程序。当然,前提是它不存在——1 个时钟,1 个数据听起来像 i2c(尽管 10ms 周期听起来比 i2c 慢得多),并且已经存在用于 Coldfire 的位碰撞 i2c 驱动程序。即使不是 i2c,您也可能会发现使用 i2c-adap-mcf_gpio 作为起点。

    实际上你很幸运,因为它是一个 10 毫秒的周期——默认内核节拍是 10 毫秒(必要时可以调整),所以你应该能够使用适当的内核睡眠功能。

    (这还取决于您使用的内核。简单的用户模式 ​​I/O 在 2.6 内核中很容易使用 - 2.4 内核中有一些功能,但它们可能需要更多工作。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 2013-03-04
      相关资源
      最近更新 更多