sharp_spi_iic --- SPI - IIC 控制模块
################### SPI 传输类型 ###################
SPI_WR = 0x0000 #双向传输
SPI_OnlyW = 0x0001 #只发送
SPI_OnlyR = 0x0002 #只接收
################### IIC 传输类型 ###################
I2C_START_W = 0x0000 #Start+WAddr+WDat
I2C_W = 0x0001 #WDat
I2C_START_R = 0x0100 #Start+RAddr+RDat
I2C_R = 0x0200 #RDat
I2C_P =0x8000 #Stop 中途需要发送停止位
###################SPI模式##############################
User_SPI_4Wire = 0x00
User_SPI_3Wire = 0x10
User_SPI_DSPI = 0x20
User_SPI_QSPI = 0x30
- sharp_spi_iic.SHARP_IIC_DevExist(adap, addr)
判断器件是否存在
- 参数
adap: 设备类
addr: 地址
- 返回
0地址存在
-1地址不存在
- sharp_spi_iic.SHARP_IIC_init(**kwargs)
IIC初始化
- 参数
kwargs 可变参数
- 返回
adapter 设备类
- 说 明 :id(id号 必须要传 硬件IIC--1,软件IIC--0 当前只实现软件IIC)
scl(scl对象 对应IO口宏 硬件IIC可以不传) id置为1后 此值无效 sda(sda对象 对应IO口宏 硬件IIC可以不传) id置为1后 此值无效 freq (scl 的最大频率) timeout (等待ack超时时间) iic_delay(IIC时钟和数据脚的间隔时间 可以通过此去控制IIC速率默认为1,对应时钟速率90K) number(当前初始化IIC的序列号) 默认为0 当需要初始化多组IIC的时候需要赋值
示例: 软件IIC IIC_init(id = 0,scl = LCD_TP_SCL,sda = LCD_TP_SDA,freq=10000,iic_delay = 1)
- sharp_spi_iic.SHARP_IIC_transfer(adap, message, msgs_num)
iic发送接收方法
- 参数
adap 设备类
message 消息类
msgs_num :连续处理包个数
返回 : 无
- 示例byte_buf = bytearray(5)
message = iic_message() message.iic_type = I2C_START_R 类型 见第14行 message.iic_len = 5 message.IIC_Buffer = byte_buf 此处传的是发送的byte,如果有接收可在IIC_transfer后面在回读一下IIC_Buffer IIC_transfer(adapter,message)
- sharp_spi_iic.SHARP_SPI_CS_LevelSet(Level)
软件控制复用后的片选
- 参数
Level : 1--高电平 0--低电平 其他--无效
返回 : 无
- sharp_spi_iic.SHARP_SPI_DataBit_Mode(databit)
控制数据位切换。
- 参数
databit : 数据位 8--8bit 9--9bit 其他--无效
返回 : 无
- sharp_spi_iic.SHARP_SPI_DataIo_ModeSet(mode)
控制数据引脚输入输出切换
- 参数
mode : 模式 1--输出 0--输入 其他--无效
返回 : 无
- sharp_spi_iic.SHARP_SPI_WireMode(mode)
SPI模式修改 可供选择的模式有 三线spi,四线SPI,DSPI,QSPI * 参数
fmode :模式
返回 : 无
- sharp_spi_iic.SHARP_SPI_transfer(adap, message, msgs_num)
spi发送接收方法
- 参数
adap :设备类
message :消息类
msgs_num :连续处理包个数
返回 : 无
- 示例byte_buf = bytearray(5)
message = spi_message() message.spi_type = SPI_OnlyW 类型 见第14行 message.spi_len = 5 message.RX_Buffer = byte_buf 有接收时候在传 byte类型数据 message.TX_Buffer = byte_buf 有发送的时候在传 SPI_transfer(adapter,message)
- sharp_spi_iic.SHARP_spi_init(**kwargs)
spi初始化
- 参数
kwargs 可变参数
- 返回
adapter 设备类
- 说 明 :id(id号 必须要传 硬件spi--1,软件spi--0,1.配置硬件SPI时,模式配置完之后还需要把引脚配成复用。2.软件SPI只实现了4线模式)
mode(SPI模式 3--三线SPI 4--四线SPI 5--DSPI 6--QSPI 默认说4线SPI 必须要传) baudrate(分频值 主频是50M分频 默认10--5M 必须要传) polarity(极性可以是 0 或 1,是时钟空闲时所处的电平。默认0 必须要传) phase (相位可以是 0 或 1,分别在第一个或者第二个时钟边缘采集数据。默认0 必须要传) bits (每次传输的数据长度,默认是 8 位。 可以不传) firstbit (传输数据从高位开始还是从低位开始 默认MSB 可以不传) sck (sck对象 对应IO口宏) id 置为1后 此值无效 mosi (mosi对象 对应IO口宏) id 置为1后 此值无效 miso (miso对象 对应IO口宏) id 置为1后 此值无效 number(当前初始化spi的序列号) 默认为0 当需要初始化多组spi的时候需要赋值
- 示例: 软件spi adapter = spi_init(id = 0,mode = 4,baudrate = 10,polarity = 1,phase = 1,sck = LCD_TP_SCK,mosi = LCD_TP_MOSI,miso = LCD_TP_MISO)
- 硬件spi adapter = spi_init(id = 1,mode = 4,baudrate = 10,polarity = 1,phase = 1,sck = LCD_TP_SCK,mosi = LCD_TP_MOSI,miso = LCD_TP_MISO) #配置硬件SPI时,模式配置完之后还需要把引脚配成复用。
UserIO_AF_Set(USER_TP_MISO_AF,USER_IO_AF) UserIO_AF_Set(USER_TP_MOSI_AF,USER_IO_AF) UserIO_AF_Set(USER_TP_SCK_AF,USER_IO_AF)