您的位置:首页 > 文旅 > 美景 > 关于武汉芯景科技有限公司的IIC接口扩展芯片XJ9554开发指南(兼容PCA9554)

关于武汉芯景科技有限公司的IIC接口扩展芯片XJ9554开发指南(兼容PCA9554)

2025/3/20 21:22:04 来源:https://blog.csdn.net/weixin_69435861/article/details/141329883  浏览:    关键词:关于武汉芯景科技有限公司的IIC接口扩展芯片XJ9554开发指南(兼容PCA9554)

一、引脚介绍

1.引脚图

2.引脚描述

二、功能介绍

1.当作输入口,读取I/O口的电平

2.当作输出口,输出高低电平

3.中断功能,检测电平的变化

三、XJ9554的驱动

XJ9554.C

/** AT9554.c**  Created on: 2024年8月19日*      Author: Administrator*/
#include "softiic.h"
#include "AT9554.h"
#include "usart.h"
#include <stdio.h>//XJ9554的IIC读
uint8_t XJ9554ReadOneByte(uint8_t ReadAddr)
{uint8_t temp=0;bsp_analog_i2c_start();bsp_analog_i2c_send_byte(0X40);bsp_analog_i2c_wait_ack();bsp_analog_i2c_send_byte(ReadAddr);bsp_analog_i2c_wait_ack();bsp_analog_i2c_start();bsp_analog_i2c_send_byte(0X41);bsp_analog_i2c_wait_ack();temp= bsp_analog_i2c_read_byte();bsp_analog_i2c_nack();bsp_analog_i2c_stop();return temp;
}//XJ9554的IIC写
void XJ9554WriteOneByte(uint8_t WriteAddr,uint8_t DataToWrite)
{bsp_analog_i2c_start();bsp_analog_i2c_send_byte(0x40);bsp_analog_i2c_wait_ack();bsp_analog_i2c_send_byte(WriteAddr);bsp_analog_i2c_wait_ack();bsp_analog_i2c_send_byte(DataToWrite);bsp_analog_i2c_wait_ack();bsp_analog_i2c_stop();
}/***
功能:设置I/O口输出高或者输出低
输入:pin  引脚state   SET为高,RESET为低
返回:无
*****/
void XJ9554_set_pin(uint8_t pin, uint8_t state)
{unsigned char data0 = XJ9554ReadOneByte(OUTPUT_PORT_REG);unsigned char data1 = XJ9554ReadOneByte(CONFIGURATION_REG);if (state){data0 |= 1 << pin;}else{data0 &= ~(1 << pin);}data1 &= ~(1 << pin);XJ9554WriteOneByte(OUTPUT_PORT_REG, data0);XJ9554WriteOneByte(CONFIGURATION_REG, data1 );
}/***
功能:获取I/O口的输入电平
输入:pin  引脚
返回:1   I/O口的电平为高0	I/O口的电平为低
*****/
uint8_t XJ9554_get_pin(uint8_t pin)
{unsigned char data0 = XJ9554ReadOneByte(INPUT_PORT_REG);unsigned char data1 = XJ9554ReadOneByte(CONFIGURATION_REG);data1 &= ~(1 << pin);XJ9554WriteOneByte(CONFIGURATION_REG, data1 );return (data0 & (1 << pin)) != 0;
}/***
功能:改变I/O口的输入极性
输入:pin  引脚Value  RESET正极性    SET正极性
返回:
*****/
void XJ9554_Polarity(uint8_t pin, uint8_t Value)
{unsigned char data = XJ9554ReadOneByte(POLARITY_INVERSION_REG);if (Value){data |= 1 << pin;}else{data &= ~(1 << pin);}XJ9554WriteOneByte(POLARITY_INVERSION_REG, data );
}

XJ9554.H

/** AT9554.h**  Created on: 2024年8月19日*      Author: Administrator*/#ifndef INC_AT9554_H_
#define INC_AT9554_H_#define INPUT_PORT_REG 0x00
#define OUTPUT_PORT_REG 0x01
#define POLARITY_INVERSION_REG 0x02
#define CONFIGURATION_REG 0x03#define RESET 0
#define SET 1uint8_t XJ9554ReadOneByte(uint8_t ReadAddr);
void XJ9554WriteOneByte(uint8_t WriteAddr,uint8_t DataToWrite);void XJ9554_set_pin(uint8_t pin, uint8_t state);
uint8_t XJ9554_get_pin(uint8_t pin);
void XJ9554_Polarity(uint8_t pin, uint8_t Value);#endif /* INC_AT9554_H_ */

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com