IO口模拟SPI的问题,其实光模拟来说,就时序问题,读取和写入一个字节的时序。
首先选4个IO口,作模拟用,分别模拟CS、SCLK、SI、SO.即是片选、时钟、数据输入、数据输出。
IO口初始化,分别把对应的IO口设置输入输出。CS、SCLK、SO、设置为输出,SI设置为输入。
然后就是时序问题了,一般如下:
//设要写的数据是abyte表示。
CS_1; //片选高,
SCLK_1; //时钟高
CS_0; //片选低,开始工作。
for(i=0;i<8;i++)//循环产生时钟,写入数据。
{
SCLK_0; //时钟低,下降沿
if(0x80&abyte)
SO_1;
else
SO_0;
SCLK_1;
abyte<<=1;
}
SCLK_0;
CS_1;
//设要读的数据是abyte表示。
CS_0;
SCLK_1;
for(i=0;i<8;i++)//读取数据值。
{
SCLK_0;
;;
SCLK_1;
abyte<<=1;
if(in_SI)
abyte++;
}
SCLK_0;
CS_1;
关键字:IO口 模拟SPI
引用地址:
关于IO口模拟SPI
推荐阅读最新更新时间:2024-03-16 15:21
STM32模拟SPI接口程序
做开发的时候经常需要用到模拟spi接口,这种写法不错的,网上很多类似的,我也拿来学习了。 #define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI
[单片机]
STM8S---独立按键IO口设置及按下事件问题
1 GPIO设置 STM8 I/O 口引脚配置表 Px_DDR Px_CR1 Px_CR2 I/O 方式 引脚状态 0 0 0 输入 悬浮输入 0 0 1 输入 上拉输入 0 1 0 输入 中断悬浮输入 0 1 1 输入 中断上拉输入 1 0 0 输出 开漏输出 1 1 0 输出 推挽输出 1 x 1 输出 输出(最快速度为10MHZ) 对STM8S的IO配置,我们只需要操作五个寄存器就行了: 输出数据寄存器 (ODR) 输入数据寄存器 (IDR) 数据方向寄存器 (DDR) 控制寄存器1(CR1) 控制寄存器2(CR2) 2 按键检测 在做独立按键检测的时
[单片机]
MSP430G2553学习笔记——1
一,MSP430G2553单片机的各个功能模块 (一),IO口模块, 1、我们所用的MSP430G2553有两组IO口,P1和P2。 2、IO口的寄存器有:方向选择寄存器PxDIR,输出寄存器PxOUT,输入寄存器PxIN,IO口内部上拉或下拉电阻使能寄存器PxREN, IO口功能选择寄存器PxSEL和PxSEL2,IO口中断使能寄存器PxIE,中断沿选择寄存器PxIES,IO口中断标志寄存器PxIFG。 3、所有的IO都带有中断,其中所有的P1口公用一个中断向量,所有的P2口公用一个中断向量。所以在使用中断时,当进入中断后,还要判断到底是哪一个IO口产生的中断,判断方法可以是判断各个IO口的电平。 4、中断标志
[单片机]
51单片机IO口的输入输出方式
简介:传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。 灌电流方式:LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。 推挽工作方式:LED正负极分别接在两个IO口上,然后设置正极IO接口为推挽输出,负极IO接口为标准双向灌电流输入。推挽方式具有强上拉能力,可以实现高电平驱动LED。 IO口的四种使用方法
[单片机]
stm32的jatg口配置为普通io口使用
在使用stm32的时候, spi3和jtag口是有重合的, 如果要使用spi3 或者要把jtag口作为普通io口使用可参考如下配置: 1. 使用spi3接口, 参考 卢有亮 老师的教程 , 该套代码实现了该项功能 2. stm32的jtag口可以配置为SWD模式 这样能空余出来三个接口, 并且不影响程序的下载和调试, 关于如何配置为SWD模式可以参考上一篇博客. 将STM32的JTAG下载引脚:JTDO、JTDI、JTCK 配置普通IO口其实和配置为spi3 是一样的 只不过spi3还要开spi的时钟, 这里更改为开io口时钟即可, 其中最关键的两条指令是: 1、打开复用时钟:RCC_APB2PeriphClockC
[单片机]
51单片机之IO口输入的内部工作原理 ;IO内部电路分析;独立按键实现和消抖
(一)IO口驱动能力:(注意:1的时候是驱动电流,0是驱动灌电流) 灌电流:在P0口为0V时,支持外接的电源流入的电流为12mA. 灌电流 如上图所示,当单片机输出低电平时,允许电路向单片机引脚内灌入电流,这个电流就叫做“灌电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“灌电流负载”。 拉电流 如上图所示,当单片机输出高电平时,允许电路从单片机的引脚拉出电流,这个电流就叫做“拉电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“拉电流负载” 上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。用单片机输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电
[单片机]
S3c2440裸机-spi编程-3.gpio模拟spi驱动OLED
操作OLED,通过三条线(SCK、DO、CS)与OLED相连,这里没有DI是因为2440只会向OLED传数据而不用接收数据。 gpio_spi.c来实现gpio模拟spi,负责spi通讯。对于OLED,有专门的指令和数据格式,要传输的数据内容,在oled.c这一层来实现,负责组织数据。 因此,我们需要实现以上两个文件。 1.SPI初始化 新建一个gpio_spi.c文件,实现SPI初始化SPIInt() 1.1 GPIO init(pinmux管脚等配置) 上图J3为板子pin2pin到OLED的底座。 GPF1作为OLED片选引脚,设置为输出; GPG4作为OLED的数据(Data)/命令(Command)选择引脚,设置
[单片机]