[C8051F320]Silicon C8051F320的IO…

原创 2015年07月11日 00:17:13
   问题描述:虽然一般芯片厂商都会提供相应的例程,固件代码开发也不需要完全依靠Datasheet来实现自己的代码了,许多都可以直接用。但用的过程中有时还是有点不放心,特别是出现问题的时候,就必须回到代码并对应硬件寻找问题了。而且感觉C8051F320的IO机制比较有趣,于是打算花些时间了解了解,做下记录,如果有错误的地方再改进。
   C8051F320的IO概述:每个端口引脚都既可以用作GPIO,又可以作为模拟输入。而且IO引脚还可以复用许多特殊功能接口,复用是用过Priority Crossbar Decoder来实现的(具体通过XBR0和XBR1两个寄存器的设置)。在PnMDOUT寄存器中可设置IO口为推挽或开漏模式。
   IO单元框图:
[C8051F320]Silicon <wbr>C8051F320的IO口机制
    WEAK-PULLUP,弱上拉,设置为0时有效。当端口输出高电平(PORT-OUTPUT=1),非模拟输入(Analog Select=0),启用弱上拉(WEAK-PULLUP=0)时,最右边的WEAK场效应管导通连接到PORT PAD,导通电阻很小,起到了弱上拉的作用了。
    PUSH-PULL,推挽,设置为1时有效。当允许输出(PORT-OUTENABLE=0),且输出为高电平(PORT-OUTPUT=1),右边上面的连接VDD的场效应管导通,下面的连接GND的场效应管截止,此时PORT PAD输出高电平。当允许输出(PORT-OUTENABLE=0),且输出为低电平(PORT-OUTPUT=0),右边上面的连接VDD的场效应管截止,下面的连接GND的场效应管导通,此时PORT PAD输出低电平。这就是端口引脚的推挽输出方式了。
    PORT-OUTENABLE,输出允许,设置为0时有效。当设置为1时,不允许输出,PORT PAD始终为低电平。
    PORT-OUTPUT,输出高电平和低电平,前提是允许输出已选择。
    ANALOG-INPUT,模拟输入选择,为1时选择模拟输入,此时PORT-INPUT可用,将PORT PAD连接到PORT-INPUT。此时所有的弱上拉,数字驱动与数字接收都失效,这样做是为了减少功耗和干扰。
   Priority Crossbar Decoder:
    这个带优先级的交叉解码器可根据优先级来分配每个IO口功能(UART0除外,因为串口0总是分配到引脚P0.4和P0.5)。如果数字资源选择了,则将最低未分配的端口引脚给该资源使用。如果端口引脚已经分配了其他数字功能了,Crossbar就跳过,分配下一个尚未分配的端口引脚。此外,如果在PnSKIP寄存器中设置了指定端口引脚需要跳过时,Crossbar也会跳过指定的端口引脚而分配最低位的尚未分配的其他引脚给数字资源。如有些引脚用于模拟输入,GPIO,就可以在PnSKIP中设置跳过这些引脚使得不分配其他的数字资源。具体如何跳过与数字资源引脚分配优先级的顺序等问题参见C8051F320的Datasheet的图表:
[C8051F320]Silicon <wbr>C8051F320的IO口机制
    另外还有一张分配了外接晶振引脚的类似的图,这里不贴出了。
   端口初始化流程:
[C8051F320]Silicon <wbr>C8051F320的IO口机制
    最后,就可以开始编程根据IO口有关的寄存器进行设置,实现需要的功能了。相应的寄存器有XBR0,XBR1,P0,P0MDIN,P0MDOUT,P0SKIP,P1,P1MDIN,P1MDOUT,P1SKIP,P2,P2MDIN,P2MDOUT,P2SKIP,P3,P3MDIN,P3MDOUT。

版权声明:本文为博主原创文章,未经博主允许不得转载。

[C8051F320]完全在Keil下进行C8051…

问题描述:之前写过在Silicon Laboratories IDE下进行C8051Fxx单片机程序开发以及在Keil下编程调试,然后将生成的hex文件用Silicon的Flash Program烧写...
  • suxiang198
  • suxiang198
  • 2015年07月11日 00:16
  • 1446

[C8051F320]串口UART0全双工调试过…

问题描述:由于应用需要,将C8051F320的UART0作为数据通信接口,与上位机之间进行通信并实现简单的控制功能。程序大概是:由串口定时发送数据到上位机,这个定时时间用定时器控制,可由上位机通过串口...
  • suxiang198
  • suxiang198
  • 2015年07月11日 00:17
  • 1157

C8051F 内部Flash读写

#include "Head.h" //----------------------------------------------------------------------------- ...
  • a379039233
  • a379039233
  • 2014年01月12日 13:13
  • 2191

silicon 单片机C8051F320的I2C总线控制程序

  • 2011年12月01日 21:40
  • 37KB
  • 下载

c8051f320 io配置例子,刚接触交叉开关的同志们也许需要这个

  • 2011年12月01日 21:24
  • 8KB
  • 下载

c8051f320 keil

c8059f320 flash :16kB   0000H-3FFFH, c代码 在keil中可设置编译地址 比如 之后keil会将代码编译在2a00之后这些地址空间里面,恩,是实际的flash的物...
  • songqqnew
  • songqqnew
  • 2011年07月31日 17:01
  • 1825

silicon 官网 C8051F30x bootload 例程

//----------------------------------------------------------------------------- // loader_F30x.c /...
  • momo023
  • momo023
  • 2013年12月03日 09:07
  • 1560

labview实现PC与C8051F320串口通信

  • 2015年06月09日 09:13
  • 228KB
  • 下载

C8051F320 usb bulk

  • 2015年05月06日 14:20
  • 213KB
  • 下载

基于C8051F320的数据采集系统设计

  • 2013年09月26日 22:06
  • 3MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[C8051F320]Silicon&nbsp;C8051F320的IO…
举报原因:
原因补充:

(最多只允许输入30个字)