PIN/PAD Design in SoC - 3 (待续)

3.IO Controller
这部分不复杂,只是繁琐,实现的时候别漏了什么就好。

3.1 IO Multiplexing
IO复用主要含有正常功能复用和测试模式复用两大类。功能复用可以分为静态复用和动态复用。
静态复用顾名思义,是在一个相对大尺度的时间段内一个IO上的功能是不变的,一般通过软件配置寄存器、封装、strappin实现。
动态复用的时间尺度相对小一点,一般需要做点硬件逻辑自动实现多种功能在一个IO上的切换。比如同一组IO既做存储器接口也做显示接口,当播放视频的时候,需要从存储器中输入数据,然后把这些数据再输出到显示设备上,这种应用场景下这组IO一会儿做输入给存储器,一会儿做输出给显示设备,为了防止打架,需要处理好切换过程。
测试模式复用一般静态复用就够了。

3.2 GPIO Implementation
消费类芯片竞争激烈,如何用更小的成本实现更多的功能是个很大的挑战。具体到IO上,当然希望所有的数字IO都能在其正常功能之外,还能被软件自由的控制以扩充功能。我们称之为通用IO。GPIO的功能包括,IO方向的控制、输出值的控制、外部状态的输入、片外中断接收(沿触发、电平触发、抗毛刺等)、开漏模拟等等。

3.3 Strap Pin Implementation
strap pin是个非常有趣的功能。可以有两种实现方式,一种是用上电复位驱动一个latch来捕获strappin上的设定值;另一种是用一个free running的clock来寄存strap pin上的值。strappin的应用主要用于指示某种功能是否被激活,
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
/usr/local/lib/python3.8/dist-packages/gpiozero/devices.py:288: PinFactoryFallback: Falling back from rpigpio: No module named 'RPi' warnings.warn( /usr/local/lib/python3.8/dist-packages/gpiozero/devices.py:288: PinFactoryFallback: Falling back from lgpio: No module named 'lgpio' warnings.warn( /usr/local/lib/python3.8/dist-packages/gpiozero/devices.py:288: PinFactoryFallback: Falling back from rpio: No module named 'RPIO' warnings.warn( /usr/local/lib/python3.8/dist-packages/gpiozero/devices.py:288: PinFactoryFallback: Falling back from pigpio: No module named 'pigpio' warnings.warn( /usr/local/lib/python3.8/dist-packages/gpiozero/devices.py:288: PinFactoryFallback: Falling back from native: unable to locate Pi revision in /proc/device-tree or /proc/cpuinfo warnings.warn( Traceback (most recent call last): File "fan.py", line 3, in <module> fan=OutputDevice(pin=121) File "/usr/local/lib/python3.8/dist-packages/gpiozero/devices.py", line 108, in __call__ self = super(GPIOMeta, cls).__call__(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/gpiozero/output_devices.py", line 83, in __init__ super(OutputDevice, self).__init__(pin, pin_factory=pin_factory) File "/usr/local/lib/python3.8/dist-packages/gpiozero/mixins.py", line 85, in __init__ super(SourceMixin, self).__init__(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/gpiozero/devices.py", line 540, in __init__ super(GPIODevice, self).__init__(**kwargs) File "/usr/local/lib/python3.8/dist-packages/gpiozero/devices.py", line 250, in __init__ Device.pin_factory = Device._default_pin_factory() File "/usr/local/lib/python3.8/dist-packages/gpiozero/devices.py", line 291, in _default_pin_factory raise BadPinFactory('Unable to load any default pin factory!') gpiozero.exc.BadPinFactory: Unable to load any default pin factory!
07-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值