-
stm32的spi驱动程序
应用背景SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时 钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工, 同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局 上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信 协议,STM32 也有 SPI 接口。关键技术
SPI信号线:SPI 接口一般使用 4 条线通信: MISO 主设备数据输入,从设备数据输出。 MOSI 主设备数据输出,从设备数据输入。 SCLK 时钟信号,由主设备产生。 CS 从设备片选信号,由主设备控制。
SPI模式:根据SPI时钟极性和时钟相位配置的不同分为4种SPI模式。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电 平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串 行同步时钟的第二个跳变沿(上升或下降)数据被采样。
SPI架构分析:通过STM32的架构图,可以看到MISO数据线接收到的信号经移位寄存器处理后把数据转移到接收缓冲区,然后这个数据就可以由我们的软件从接收缓冲区读出了。
- 2023-08-18 10:45:04下载
- 积分:1
-
保护驱动
只要有安装DDK,命令提示下 进入 makefile、sources 所在的目录 输入build 即可编译出sys是初学DDK者的首先
- 2022-01-29 00:32:24下载
- 积分:1
-
Html Preview
c级
- 2022-01-26 02:47:27下载
- 积分:1
-
fcm8531速度积分代码
速度积分的原理如下:比例积分 (PI) 控制器利用电流矢量的相位误差产生速度命令,然后对速度命令进行积分运算,产生位置信号,从而实现电机的无传感器控制。
- 2022-03-03 08:54:25下载
- 积分:1
-
FPGA驱动数码管动态显示10位数字
资源描述FPGA驱动数码管动态显示10位数字,已通过zedboard测试 代码修改容易
- 2022-07-25 06:28:30下载
- 积分:1
-
基于51单片机的CAN 通信
应用背景
为初学者打通基于51单片机的CAN通信学习。使用的can控制器是SPI接口的MCP2515。
本程序在51单片机开发板上经验证,可以正常使用。
希望对你有所帮助。
关键技术
部分程序:
*/
void mcp2515_setRegister(unsigned char address,unsigned char Value)
{
CS = 1;
Delay_Us(5);
SPISendByte(0x02); /* 字节写命令,0x02,后跟一字节地址,一字节数据 */
SPISendByte(address);
SPISendByte(Value);
CS = 1;
Delay_Us(5); /* CS禁止时间,大于50ns */
}
/****************************************************************
*
* 函数名: mcp2515_setRegisterS
* 入口参数:adress: 需要设置的寄存器的地址
* value[]:用来设置的缓冲区的头指针
*
- 2023-03-23 19:30:03下载
- 积分:1
-
NRF51822-24 16 C
这是一个24C16 EEPROM存储器驱动Nordic半导体nrf51822芯片使用有或没有软设备栈(S110,S310,……)。注意:只有字节字节读/写的很好
- 2022-07-14 18:52:23下载
- 积分:1
-
C#界面皮肤源码(带大量皮肤素材)
一个从网上下载的东西,貌似还要了很多分,免费非大家伙看看
居然要求写满50个字,平生最恨至少800了,此处可以省略5000字
- 2022-08-25 00:39:06下载
- 积分:1
-
软件定时器
应用背景
我们在做单片机程序时,经常会用到多个定时器,这时我们就需要各个配置多个不同的TIMER,有时TIMER不够用,有时TIMER配置过多,标志过多,程序写着写着就乱了,就算是理清了,也会造成程序可读性差,可移植性低,对硬件依赖性强的缺点。
为了解决这个问题,我们可以用程序实现一个软件定时器,在内存允许的范围内,它可以实现无数个定时器、计数器功能,当需要一个定时器,只需要在程序里定义一个定时器变量,通过不同接口的调用,就可以实现定时功能;实现这一功能,只需要占用一个硬件定时器即可,大大减少了硬件TIMER的占用,提高了程序的可移植性,降低程序的复杂度。
关键技术
在这里,我们需要借鉴操作系统架构里的系统嘀嗒功能。先初始化一个硬件TIMER作为系统的心跳,用这个TIMER来驱动一个全局变量sys_pulse的递增;然后利用程序来查询变量当前值判断系统程序的执行时间,从而得现时间的间隔,再通过事件发送程序来通知任务定时已到。
一个软件定时器变量,至少需要包括三个元素,开始时间start_time,定时时长interval,事件内容event;
每当程序启动一个定时器,将当前系统的sys_pulse值赋于开始时间变量start_time, 设定定时器的定时时长interval, 和事件内容event, 然后在主循环里不断查询sys_pulse 是否大于 start_timer + interval,如果大于,则表明此定时器定时结束,然后调用事件发送函数告诉任务,定时已到,开始执行任务。
如果用户要移植此程序,只需要修改timer_init()内硬件TIMER的初始化程序即可,其它内容可以直接引用,不需要修改。
&
- 2023-04-15 22:30:04下载
- 积分:1
-
12864 PIC18F驱动
资源描述
本代码是PIC18F驱动LCD12864显示程序,已经成功显示无误。编译器是XC8,可以正常使用。
晶振使用的是内部8MRC振荡器。测试基于ST7920控制芯片的LCD12864的显示并行方式连接(该程序只支持ST7920控制芯片的LCD12864)
- 2023-02-02 04:25:03下载
- 积分:1