- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8051320引脚
概括一下,PnMDIN ,PnMDOUT, PnSKIP, XBR0、XBR1 ,XBARE = ‘1’ 数它们都与编程时无关,它们涉及的是信号是模拟还是数字,引脚是漏极开路还是推挽等不涉及电路的引脚功能连线,所以编程时它们不起任何作用。但具体实现时它们就起作用了
C8051F学习笔记3:优先权交叉开关译码器
数字和模拟资源可以通过25个I/O引脚(C8051F320)每个端口引脚都可以被定义为通用I/O(GPIO)或模拟输入。P0.0 ~ P2.3可以被分配给内部数字资源
特点:
??? 所有端口I/O都耐5V电压。
??? 端口I/O单元可以被配置为漏极开路或推挽方式。
?
端口I/O初始化 端口 I/O 初始化包括以下步骤:
1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。
2. 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。
3. 用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。
4. 将引脚分配给要使用的外设(XBR0、XBR1)。
5. 使能交叉开关(XBARE = ‘1’)。
?
下面以端口P0为例
PnMDIN: 端口输入方式寄存器
?
????
??? ?对应的P0MDIN[n] =0 模拟输入
???????????????? P0MDIN[n]=1 数字输入(默认)
?
PnMDOUT: 端口出方式寄存器
?
???? 对应的P0MDOUT[n] =0 漏极开路(默认)
??? ???????P0MDOUT[n] =1 推挽输出
?
推挽输出,push-pull,不需要外加驱动电路,可以直接驱动外面的芯片。
推挽输出的时候,端口输出高电平,NMOS截止,PMOS导通,把IO口拉高;端口输出为低电平,PMOS截止,NMOS导通,把IO口拉低,适合驱动一些TTL负载,LED,或是通讯时用作数据或时钟发送;
?
漏极开路,open-drain,需要外加电阻上拉到电源。
漏极开漏输出时PMOS被禁止,只有保留NMOS,当端口输出低电平时,NMOS导通,把IO拉低;但输出端口为高电平时,NMOS截止,端口没有输出了高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1,适合线与或是用作I2C通讯。
?
模拟输入,Analog in
模拟输入被使能时,其它IO方式将被禁止,模拟信号直接经过一个Pass Gate 送入MCU内部的ADC;
?
数字输入,Digital in
当数字输入时,IO口输出禁止,数字信号经过 Schmitt Trigger(施密特触发器??)送入内部逻辑。
?
?
?
特别需要注意的是当IO口用作输入端口时:
有两种方法:
1、? 禁止IO输出,配置为数字输入。注意是所有的IO端口的输出方式都被禁止
2、? 配置为OD方式。这时外部的高电平会保持,低电平会把IO拉低。
通常中断输入,数据输入时可以这样配置
?
不管交叉开关是否将端口引脚分配给某个数字外设,都需要对端口驱动器的输出方式进行设置。例外情况是SMBus上的SDA和SCL及UART的RXD引脚,这些引脚被自动配置为漏极开路。
?
?
关于推免和漏极开漏可参考
1)C8051F单片机中IO的使用
/espace/45355/message.aspx?
2)漏级开路 VS 推挽方式
/blog/4458920-1217831198?
3)8051 P0口
?
P0SKIP:端口0跳过寄存器
?
??????
????? PnSKIP[n]=0 引脚不被交叉开关跳过;(默认)
????? PnSKIP[n]=0 引脚被交叉开关跳过。
???????
???????
??????? ?XTAL1(P0.2)脚和XTAL2(P0.3)脚用作外部振荡器输入管脚时,要跳过交叉开关优先权译码表(P0SKIP = 0x0C)。
?
XBR0:端口I/O交叉开关寄存器0
XBR1:端口I/O交叉开关寄存器1
交叉开关负责SMBus、SPI、UART、定时器捕捉模块、外部PCA输入、比较器输出、定时器外部输入、/SYSCLK以及A/D转换启动输入的引脚分配。必须在访问这些外设的I/O之前配置和允许交叉开关
未指定的端口引脚作为通用I/O 。
?
?
?
?
?
XBARE=0 交叉开关禁止;
XBARE=1 交叉开关使能。
在交叉开关被使能之前,外部引脚保持标准端口I/O方式(输入)。
?
没有引脚被跳过的交叉开关优先权译码表
?
可以通过Silicon Labs IDE软件的配置向导(Configuration Wizard)配置I/O管脚,如下图,配置UART0和SPI0和SMBus。UART0的TX0、RX0固定在P0.4和P0.
文档评论(0)