MCP23S18学习总结

来源:互联网 发布:网络电影靠什么赚钱 编辑:程序博客网 时间:2024/06/13 07:49

一、MCP23S18的引脚

GPIOA和GPIOB共16个为双向IO,输出为开漏输出,GPIO模块包含数据端口GPIOn、内部上拉电阻、输出锁存器OLATn

CS片选、SCK时钟、SI串行数据输入、SO串行数据输出

Vdd接电源、Vss接地、RESET复位

INTA、INTB对应端口中断输出

二、寄存器

一共22个寄存器,分为A组和B组。

1、方向寄存器IODIR

配置为1,该位引脚为输入引脚。为0,为输出引脚。

2、输入极性寄存器IPOL

某位置1,对应GPIO反映引脚电平反转后的值

3、电平变化中断控制寄存器GPINTEN

置1,允许对应引脚电平变化中断

4、中断控制寄存器INTCON

为1,引脚值与默认值DEFVAL比较。为0,引脚与先前值比较

5、电平变化中断的默认值比较寄存器DEFVAL

用于判断中断时的比较默认值

6、配置寄存器IOCON

BANK位控制如何对寄存器寻址

   当BANK=1,PORTA寄存器映射到00h~0Ah,PORTB寄存器映射到10h~1Ah


   当BANK=0,A/B寄存器组合配对


MIRROR位控制INTA和INTB如何相互作用

    为1,任何一个端口上的中断都会使INTA和INTB激活

    为0,B端口中断使INTB激活,A端口中断INTA激活

SEQOP连续操作模式位

     为1,禁止连续操作,地址指针不递增

     为0,使能连续操作,地址指针递增

ODR开漏控制位,用于使能或禁止INT引脚的开漏输出

     为1,使能开漏输出

     为0,驱动器输出有效

INTPOL中断极性,用于设置INT引脚的极性,仅在ODR清零时起作用,将INT配置为有源推挽输出。

     为1,高电平有效,为0,低电平有效

INTCC中断清零控制,配置如何清除中断

     为1,读INTCAP寄存器时清除中断

        为0,读GPIO寄存器清除中断

7、GPPU上拉电阻配置寄存器

     为1,相应端口引脚被一个内部电阻上拉

8、INTF中断标志寄存器

     为1,相应引脚发生了中断

9、INTCAP中断捕捉寄存器

      中断时捕捉GPIO端口值。该寄存器维持不变知道中断清除。

10、GPIO端口寄存器

      写入该寄存器将修改输出锁存寄存器OLAT

11、OLAT输出锁存寄存器

      读取该寄存器将读取OLAT而不是端口本身,写入该寄存器将修改输出锁存器,后者将修改输出引脚的配置。


三、中断逻辑

1、电平变化中断的发生:GPINTEN允许中断,引脚发生变化或与默认值不同(设置INTCON和DEFVAL)

2、IOCON.MIRRO决定INTA和INTB互为镜像

     

3.中断输出

       通过IOCON配置为低电平、高电平、开漏输出

4.中断端口值

      INTCAP

5.中断清除

      读GPIO或INTCAP。只要中断未清除,后续中断条件不会再引起中断。

四、工作模式

1、字节模式,禁止指针自动递增,可通过额外时钟连续访问同一地址

2、一种特殊模式(IOCON.BANK=0的字节模式)使地址指针在关联的A/B寄存器对之间切换。

3、连续模式,地址指针自动递增,访问完最后一个寄存器后,地址指针返回到00h。 

五、SPI

1.SPI读写

   字节模式,对于读写操作都是从拉低CS开始,随后发送读写命令到器件,操作码后跟地址和至少一个数据字节

   连续操作,以上拉CS结束

2.SPI寻址

控制字节格式


SPI寻址寄存器




1 0