原创 C8051F学习笔记3:优先权交叉开关译码器

2009-5-4 20:55 9051 7 9 分类: MCU/ 嵌入式

           C<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8051F学习笔记3优先权交叉开关译码器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


数字和模拟资源可以通过25I/O引脚(C8051F320)每个端口引脚都可以被定义为通用I/OGPIO)或模拟输入。P0.0 ~ P2.3可以被分配给内部数字资源


特点:


    所有端口I/O都耐5V电压。


    端口I/O单元可以被配置为漏极开路或推挽方式。


 


端口I/O初始化 端口 I/O 初始化包括以下步骤:


1 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。


2 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。


3 用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。


4 将引脚分配给要使用的外设(XBR0XBR1)。


5 使能交叉开关(XBARE = ‘1’)。


 


下面以端口P0为例


PnMDIN: 端口输入方式寄存器


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 


点击看大图


    


     对应的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上的SDASCLUARTRXD引脚,这些引脚被自动配置为漏极开路


 


 


关于推免和漏极开漏可参考


1C<?xml:namespace prefix = ns1 ns = "urn:schemas-microsoft-com:office:smarttags" />8051F单片机中IO的使用


http://blog.ednchina.com/espace/45355/message.aspx 


2漏级开路 VS 推挽方式


http://qzone.qq.com/blog/4458920-1217831198 


38051 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


交叉开关负责SMBusSPIUART、定时器捕捉模块、外部PCA输入、比较器输出、定时器外部输入、/SYSCLK以及A/D转换启动输入的引脚分配。必须在访问这些外设的I/O之前配置和允许交叉开关


未指定的端口引脚作为通用I/O


 


点击看大图 


 

 点击看大图



 


XBARE=0 交叉开关禁止;


XBARE=1 交叉开关使能。


在交叉开关被使能之前,外部引脚保持标准端口I/O方式(输入)。


 



点击看大图


没有引脚被跳过的交叉开关优先权译码表


 


可以通过Silicon Labs IDE软件的配置向导(Configuration Wizard)配置I/O管脚,如下图,配置UART0SPI0SMBusUART0TX0RX0固定在P0.4P0.5上,由于SPI0的优先级比SYSCLK高,所以SPISCKMISO依次配置到管脚P0.0P0.1、(P0.1的优先级比P0.1高,依次类推)。P0.2P0.3跳过交叉开关,用于外部振荡器输入(XTAL1XTAL2)。由于P0.4P0.5已占,所以SPI剩下的MOSINSS配置在P0.6P0.7SYSCLK配置在P1.0



 

点击看大图 


 


void Port_IO_Init()


{


    // P0.0  -  SCK  (SPI0), Push-Pull,  Digital


    // P0.1  -  MISO (SPI0), Push-Pull,  Digital


    // P0.2  -  Skipped,     Push-Pull,  Digital


    // P0.3  -  Skipped,     Push-Pull,  Digital


    // P0.4  -  TX0 (UART0), Push-Pull,  Digital


    // P0.5  -  RX0 (UART0), Push-Pull,  Digital


    // P0.6  -  MOSI (SPI0), Push-Pull,  Digital


    // P0.7  -  NSS  (SPI0), Push-Pull,  Digital


  // P1.0  -  SYSCLK,      Push-Pull,  Digital


    P0MDOUT   = 0xFF;


    P1MDOUT   = 0x01;


    P0SKIP    = 0x0C;


    XBR0      = 0x0B;


    XBR1      = 0x40;


}


 


要注意的是,首先要使能优先权交叉译码器(Enable Crossbar)


1为使端口P0P1P2.0 ~ P2.3工作在标准端口I/O输入/输出方式,交叉开关必须被使能。当交叉开关被禁止时,端口输出驱动器被禁止。P2.4 ~ P2.7P3.0总是作为标准GPIO使用。


2)未被交叉开关分配的端口引脚和未被模拟外设使用的端口引脚都可以作为通用I/O


 


具体可参考应用笔记AN001 配置端口I/O交叉开关译码器 https://static.assets-stash.eet-china.com/album/old-resources/2009/5/4/0f99c718-0fa6-4956-b0ff-b064a7cb575b.rar


 

文章评论6条评论)

登录后参与讨论

用户1554614 2015-11-13 11:21

厂家有一个配置软件,非常好用,几乎不用看说明书

lyl_420819_659650253 2015-11-11 15:00

正在学习,非常有用!

用户377235 2014-4-12 16:22

PnSKIP[n]=0 引腳不被交叉開關跳過;(默認) PnSKIP[n]=0 引腳被交叉開關跳過。 ???????????????

用户1571194 2011-7-29 16:50

正在学习,非常有用!

用户274627 2010-5-19 06:03

感谢前辈的分享

用户298072 2010-4-26 15:58

很有参考价值! 感谢前辈的分享
相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
我要评论
6
7
关闭 站长推荐上一条 /2 下一条