【经验】PCB布线技巧:8位单片机端口Crossbar功能的使用及配置
在PCB画板布线时工程师经常会遇到PCB板走线不通需要跳线或者绕开布线,如果单片机自带Crossbar功能,只要软件配置调整一下各端口功能,PCB布线就会畅通。SILICON LABS公司的8位MCU如C8051Fxxx、EFM8系列都具有Crossbar功能。本文以这两款8位MCU为基础介绍Crossbar的配置及使用。
图1:端口I/O功能框图
如图1所示,交叉开关是一个多路选择器,它用于为器件内部的硬件外设分配I/O端口。例如,它可以决定UART的RXD和TXD连到哪一个端口引脚。交叉开关负责SMBus、SPI、UART、定时器捕捉模块、外部PCA输入、比较器输出、定时器外部输入、/SYSCLK以及A/D转换启动输入的引脚分配。
交叉开关必须在访问这些外设的I/O之前被配置和允许。
未指定的端口引脚作为通用I/O。
交叉开关提供了两个关键的系统特性:
1)在端口0、端口1和端口2上的所有未分配的通用I/O引脚都被连续组合在一起。
2)对于引脚数量少的器件,它提供了外设选择的灵活性。外设选择只受限于可用的端口引脚数,而不受限于哪一个引脚是可用的。这就允许系统设计者在使用引脚数少的器件时能选择将哪些数字外设分配到器件上的数字I/O引脚。
例如,假设一个应用需要:SPI,UART,两个捕捉模块,/INT0,T2。参考图2-图4中的I/O端口交叉开关寄存器说明,交叉开关寄存器配置如下:
XBR0=00010110b;
允许UART、两个捕捉模块和SPI XBR1=00100100b;
允许T2和/INT0 XBR2=01000000b;
允许交叉开关从表2的顶部开始。
我们发现SPI引脚将占用P0.[0..3](因为不使用SMBus),UART占用引脚 P0.[4..5],CEX0占用P0.6,CEX1占用P0.7,/INT0占用P1.0,T2占用P1.1。其它端口引脚P1.[2..7]和P2.[0..7]作为通用端口引脚。引脚分配情况列于表1。
表1:引脚分配
表2:优先权交叉开关译码表
端口Crossbar功能使用和配置关键点
1)为了使用端口0、端口1或端口2的任何一个引脚作为输出,交叉开关必须被允许。
2)交叉开关译码器必须在任何一个数字外设被允许前配置。
3)交叉开关通常在复位时被配置一次,在复位处理过程的最开始处,以后不再进行配置。
4)交叉开关的设置改变器件的引脚分配。
5)每一种交叉开关设置导致唯一的器件引脚分配,如果你在交叉开关中允许或禁止外设,引脚分配将发生变化。
6)对于输出端口引脚,其输出方式(漏极开路或推挽)必须被显式设置,即使那些由交叉开关分配的端口引脚也是如此。例外情况是SMBus上的SDA和SCL及UAR 的RXD引脚,这些引脚被自动配置为漏极开路。
7)交叉开关分配的输入引脚(例如NSS或/INT0)是开路或推挽并不重要。这些引脚被配置为输入,而与相应端口配置寄存器的设置无关。为了将一个通用I/O引脚配置为输入,与这一引脚相关的端口配置寄存器位必须被清0,这样选择该引脚为漏极开路输出方式。此外,与该引脚相关的端口位必须被置1,这样使该引脚处于高阻态,或在XBR2中的WEAKPUD被清0时若上拉为高电平,这是端口引脚的复位配置。
8)在任意时刻可以通过读取相应端口SFR得到端口引脚的电平值,而不管交叉开关寄存器的设置如何或引脚被配置为输入还是输出。
9)交叉开关寄存器中的允许位是独立的。与数字外设本身的允许位是分开的。O外设部件在使用时不需要在交叉开关中被允许(例如,一个PCA模块即使在输出没有被接到引脚的情况下也能产生中断)。O那些在交叉开关中被允许但在它们自己的SFR中被禁止的外设,仍然控制端口引脚。这就是说,端口引脚可以在任何时候被读取,但是输出被占用它的外设所控制,不能作为通用输出口来访问。
10)端口1上的四个外部中断(P1.[4..7])是由引脚上的下降沿触发的,与下降沿触发源、交叉开关设置或端口引脚的输出方式无关。
11)与标准8051不同的是,C8051提供了真正的推挽输出。如果需要8051的上拉功能,可以通过将相应的端口输出配置为“推挽”方式,然后再配置为“漏极开路”来进行软件仿真。确定器件引脚分配 本节介绍如何使用优先权交叉开关译码表(即表2)来决定器件的引脚分配,这种分配基于交叉开关寄存器中的外设选择,这些选择在图2-图4中列出。
为了确定引脚分配,首先根据所需要的外设来配置交叉开关寄存器。然后从优先权交叉开关译码表的顶部开始向下扫描,直到遇到第一个被允许的外设部件。该设备将使用P0.0,如果需要多个引脚,就可以按顺序从P0.1向后分配。例如,如果SPI是第一个被允许的外设,则SCK、MISO、MOSI和NSS将分别被分配到P0.0、P0.1、P0.2、P0.3。下一个被允许的外设将被分配到引脚P0.4。所有未分配的引脚作为通用I/O。
相关技术文档:
Silicon Labs EFM8 8位MCU选型指南 详情>>>
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 1
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【经验】如何正确使用8位MCU的PortMatch功能
Silicon Labs的8位MCU(C8051和EFM8)都具有PortMatch功能,此功能允许一个或多个端口IO引脚上的逻辑电平变化触发系统事件。
设计经验 发布时间 : 2018-02-08
【经验】8位单片机EFM8SB低功耗问题调试汇总
EFM8SB提供了非常优越的低功耗性能,但在设计时还是会遇到实测功耗比理论值高或无法进入Sleep状态等问题。
设计经验 发布时间 : 2017-08-15
8位单片机EFM8的烧录器有哪些?
8位单片机EFM8系列采用C2调试接口,常见的烧录器有:1,官方的EFM8 STK、USB Debug Adapter、ToolStick。2,第三方的U-EC2/6、WizPro200EFM(支持EFM8和EFM32)等。
技术问答 发布时间 : 2016-10-25
8位单片机EFM8BB21F16中比较器参数表中的磁滞和偏移怎么理解?
8位单片机EFM8BB21F16 中比较器的磁滞是V_+在V_-附近时不会马上反转,会滞后一定的电压,磁滞的电压会导致比较器输出反转滞后,如果输入电压比较接近时有干扰可以 避免比较器输出频繁反转。比较器的偏移是指在V_+/V_-很接近时,比较器的输出电平跳转需要一定的上升/下降时间。
技术问答 发布时间 : 2017-10-10
8位单片机EFM8系列中芯片上的UID是什么?
UID是芯片中新加的全球唯一ID,即每个芯片的ID都是不一样的,EFM8系列的MCU上都包含此ID。有两类获取UID的方式,一种通过读取RAM的特定地址获得,一种通过读取Flash的特定地址获得。在早期引入此ID的MCU上(比如EFM8BB1/SB1/SB2)这个ID为32位,在芯片复位时(PC指针被复位至0之前)被复制至RAM中特定位置,用户程序可以读取其值。此位置的RAM仍然可以由用户使用。需要注意的是如果此位置被编译器分配了变量,那么当函数执行至main()时此位置的内容会被初始化代码覆盖。EFM8UB2的UID也是此类,但其位数为128位。在新的EFM8系列MCU上(比如EFM8BB3/LB1/UB1),UID位数为128位,存储在Flash上。
技术问答 发布时间 : 2017-05-05
8位单片机EFM8LB11,既有I2C,也有SMBus,那么,I2C与SMBus的主要差别是什么?
SMBus和I2C的主要差别是与各种时序要求相关。下面列举最重要的方面:SMBus定义一个最小总线时钟频率FSMB,10KHz。I2C没有明确任何最小总线时钟频率。除了维持有效的总线吞吐量,该SMBus协议参数还可作为一个简单的检测总线空闲条件(除了或代替检测每个STOP条件)和实现比特位超时的方法。SMBus定义一个数据保持时间,即从SMBCLK下降沿之后,SMBDAT仍然必须维持至少300ns有效。这在I2C协议中定义的保持时间为0。SMBus时钟最大频率定义为100KHz。I2C提供多种不同速率模式操作,Standard模式最高频率达到100KHz,Fast模式为400KHz,Fast Plus为1MHz,而High-speed高达到3.4MHz。SMBus定义一个时钟低电平超时 TTIMEOUT,最大为35ms。I2C并没有明确指定任何超时限制。SMBus明确TLOW:SEXT,即SMBus从设备的累积时钟低扩展时间。I2C没有类似的规定。SMBus明确 TLOW:MEXT,即SMBus主设备的累积时钟低扩展时间。I2C没有类似的规定。
技术问答 发布时间 : 2017-05-05
8位单片机EFM8BB21F16可以使用哪些仿真器,与C8051F系列有什么不同?
8位单片机EFM8系列MCU仍然使用了C2接口,所以C8051F使用的仿真器都可以与其通信。目前有如下类型: 1、EFM8 STK 上的J-Link,这种仿真器由Segger开发。 2、Silabs的UDA、第三方的仿真器。 3、Silabs的TOOL STICK。
技术问答 发布时间 : 2017-10-10
推荐一款带ADC的小封装8位MCU,适用于对模拟性能、MCU性能以及电路板尺寸有比较高要求的场合。
推荐EFM8LB11系列8位MCU,该系列MCU内部集成了高精度ADC(14位)、4个12位DAC、内置温度传感器、模拟比较器以及丰富的数字外设和通信接口,FLASH大小为16/32KB,RAM为1.25/2.25KB,封装包括QFN24、QFN32、QFP32以及QSOP24,最小封装3x3mm,具有高性能、低功耗、小封装等特性,非常适用于高性能、低功耗、小封装,对模拟外设有更高要求的应用设计。
技术问答 发布时间 : 2017-05-05
为什么在8位MCU C8051F392上运行正常的程序增加了一个全局变量后就无法执行到主程序中?
8位MCU C8051F392芯片内部集成有看门狗功能,这个功能默认是开启的,当全局变量过多时,在C语言的程序初始化没有结束时看门狗已经复位了,所以无法执行到主程序中,解决 办法是将STARTUP.A51添加到项目中,并在STARTUP.A51文件中将看门狗关闭。
技术问答 发布时间 : 2017-10-10
8位MCU c8051f040内部时钟振荡器是否可以用于产生波特率的时基?
8位MCU c8051f040器件的内部时钟振荡器精度为±2%,可用于产生波特率。
技术问答 发布时间 : 2017-10-10
对于8位单片机EFM8LB10,在使用ADC功能时,如何计算ADC详细的转换时间以及速率?
根据EFM8LB1 Datasheet,ADC转换总所需时间为:Total ConverSion Time=RPT×(ADTK+NUMBITS+1)×T(SARCLK)+(T(ADCCLK)×4);where RPT is the number of converSions represented by the ADRPT field and ADCCLK is the clock selected for the ADC;在高速模式下,以最快的SARCLK为18MHz 计算,跟踪时间至少需230ns( =T(SARCLK)x4),若RPT为累计一个样本,ADCCLK为系统时钟72MHz,那么ADC的转换速率约为:14 Bit Mode:1/[230ns+(14+1)/18MHz+4/72MHz]=0.9Mbps;12 Bit Mode:1/[230ns+(12+1)/18MHz+4/72MHz]=1Mbps;10 Bit Mode:1/[230ns+(10+1)/18MHz+4/72MHz]=1.1Mbps。
技术问答 发布时间 : 2017-05-05
8位单片机芯片C8051F410,使用内部数模转换DAC时,输出电压值和程序设定值不匹配,产生的原因有哪些?
导致C8051F410单片机的DAC输出电压和程序设定值有误差的原因有:(1)输入参考电压Vref不稳定,导致输出有误差;(2)DAC数据更新模式默认为“On-Demand”模式,更新发生在写数据寄存器高字节(IDAnH)时。如果程序先写IDAnH寄存器,寄存器IDAnL的数据将不能更新,导致误差产生。所以需要先把数据更新到IDAnL寄存器,再更新IDAnH寄存器。
技术问答 发布时间 : 2017-05-05
请问8位单片机EFM8BB系列有汽车级的产品吗?
8位单片机EFM8BB系列的每个型号都有汽车级的型号,经过AEC-Q100的认证。
技术问答 发布时间 : 2017-10-10
使用8位单片机EFM8BB21F16G开发,同时使能了外部中断INT0和PCA输入捕捉中断,发现PCA计数器的计数值与输入脉冲的周期不符,关闭INT0的话就正确,请问这是什么原因?
造成这种现象一般是因为INT0的触发方式配置成了电平触发,由于INT0的默认中断优先级高于PCA中断,如果是电平触发则会长时间占用INT0的中断服务函数,影响PCA中断服务函数的执行。将INT0的触发方式改为边沿触发可以避免这种现象。
技术问答 发布时间 : 2017-05-05
8位单片机EFM8BB10F8G-A-QSOP24R如何建立基于KEIL的开发平台,来进行开发、调试代码?
对于选用了EFM8BB10F8G-A-QSOP24R,以及其他EFM8系列产品,建立KEIL的平台的步骤如下:1、到KEIL官网(www.keil.com),下载最新版的KEIL-V5,并正确安装;2、正确注册,以获取不受限制的汇编器、编译器、链接器;3、到J-LINK官网(www.segger.com),下载最新版的J-LINK驱动,并安装;4、设置KEIL,在debug标签下,将调试方式改为在线的J-LINK/BB方式。至此,安装、设置工作完毕;5、将EFM8BB10F8G-A-QSOP24R例程、头文件等,移植到KEIL工程下;如此,即可以在KEIL开发EFM8BB10F8G-A-QSOP24R等EFM8系列的代码。
技术问答 发布时间 : 2017-05-05
电子商城
现货市场
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
定制水冷板尺寸30*30mm~1000*1000 mm,厚度1mm~50mm,散热能力最高50KW,承压可达3MPA;液冷机箱散热能力达500W~100KW。项目单次采购额需满足1万元以上,或年需求5万元以上。
提交需求>
登录 | 立即注册
提交评论