C语言中的问题,怎么在程序中快速更换SPI接口的CS脚

C语言中的问题,怎么在程序中快速更换SPI接口的CS脚,第1张

给你提供下思路,供参考。

sbit cs1=P1^0;

//共定义10个片选,这是少不了的。

//或者你增加硬件,使用3-8译码器,3个管脚就够了。

void spi_cs(unsigned char x)

{

switch(x)

{

case 1:

cs1=0;

break;

case 2:

cs2=0;

break;

//以此类推

}

}

这要看你用的是硬件SPI还是软件模拟SPI,如果是硬件SPI,也就是单片机自带SPI模块,只要写相应的寄存器就可以,单片机应该有确定的SPI口,与从机(或主机)一一相连就可以了。如果是软件模拟SPI,也就是通过IO口模拟SPI时序,随便四个可以输入输出的IO口就可以。

SPI有四种工作模式,各个工作模式的不同在于SCLK不同, 具体工作由CPOL,CPHA决定

CPOL: (Clock Polarity),时钟极性

当CPOL为0时,时钟空闲idle时候的电平是低电平;

当CPOL为1时,时钟空闲idle时候的电平是高电平;

CPHA:(Clock Phase),时钟相位

当CPHA为0时,时钟周期的前一边缘采集数据;

当CPHA为1时,时钟周期的后一边缘采集数据;

CPOL和CPHA,分别都可以是0或时1,对应的四种组合就是:

四种工作模式下的SCLK表现如下:

红线表示采集数据,下面的一个例子是S3C2440上面SPI控制器的总线范例:

SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

STM32F107

微控制器

STM32F107是意法半导体推出全新STM32互连型(Connectivity)系列微控制器中的一款性能较强产品,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用。

中文名

STM32F107

类型

微控制器

隶属

意法半导体

特点

轻松适应更多的应用

STM32F107是意法半导体推出全新STM32互连型(Connectivity)系列微控制器中的一款性能较强产品,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用。

新STM32的标准外设包括10个定时器、两个12位1-Msample/s AD(模数转换器) (快速交替模式下2M sample/s)、两个12位DA(数模转换器)、两个I2C接口、五个USART接口和三个SPI端口和高质量数字音频接口IIS,另外STM32F107拥有全速USB(OTG)接口,两路CAN20B接口,以及以太网10/100 MAC模块。此芯片可以满足工业、医疗、楼宇自动化、家庭音响和家电市场多种产品需求。

STM32F107VX(32位RISC性能处理器)

-32位ARM Cortex-M3结构优化

-72MHz运行频率,125DMIPS/MHz

-硬件除法和单周期乘法

-快速可嵌套中断,6~12个时钟周期

-具有MPU保护设定访问规则

-64K~256KB Flash, 高达64KB的SRAM

1个RJ45网络接口,支持10M/100M自适应网络

1个zigbee无线网络通讯接口

1个 WiFi WLAN无线宽带网络通讯接口

1个32寸大屏幕320240,262144色TFT-LCD,支持SPI接口式/总线接口,镜面屏,超高高度

电阻式触摸屏,含专业高精度触摸屏控制芯片

4个LED 发光管,1个电源发光管

含功效的音频级处理芯片

1个扬声器

1个标准35mm耳机接口

1个五方向输入摇杆

USB OTG功能,支持外接鼠标,键盘

3个GPIO 按键

1个RESET 按键

2个CAN 连接插座

2个RS232 连接插座(DB9) ,其中1个RS2S2带硬件流控制引脚

1个mini型USB 插座,支持USB OTG,配备专业USB OTG转接线

红外接口

智能卡接口

SPI接口

IIC接口

1个MSD 卡座(不含MicroSD卡),提供文件系统

USB OTG功能,支持外接优盘

IIC接口外接EEPROM

直流无刷电机控制接口

外接3路ADC输入通道

1路电位器输入模拟信号

3轴加速度传感器

1个 传感器接口,含UART,SPI,IIC,EXTI,GPIO扩展,置于传感器接口上的电路扩展面包板

USB OTG接口,支持最新USB技术

1个JTAG/SWD调试接口(20pin)

自带CPU功率测量电路,专为低功耗应用设计

供电方式: 5V电源适配器或USB供电,通过跳线选择

ADC转换程序:DMA控制,模拟看门狗,外部触发,定时器触发,双ADC同步

电池备份区域测试:备份数据,入侵检测

CAN通讯:自回环模式,正常通讯模式

CPU内核功能测试:位绑定,特权模式

CRC校验

DAC:转换测试:双通道正弦波,单通道噪声,单通道阶梯波,双通道三角波

DMA传输:FLASH-RAM数传,ADC-TIM数传,SPI数传

EXTI外部中断

Flash *** 作:编程,写保护

GPIO *** 作:IO口翻转,IO重映射

I2C *** 作:I2C控制EEPROM

IIS *** 作:中断方式,SPI /IIS切换

独立看门狗测试

CPU调试功能使用方法

中断控制器使用方法:中断唤醒低功耗,IRQ通道配制,中断优先级,中断向量表重定位

低功耗测试:STANDBY模式,STOP模式

RCC时钟控制

RTC实时时钟使用:万年历,时钟校准

SPI实验:数据的CRC校验,SPI中断方式,全双工通讯,单工中断模式模式

从你的图上,看不到led灯接到那个管脚。因此还无法准确判断。但似乎接在p16上,否则你没必要在程序中 *** 作p16。

p0一般在程序中定义为单片机端口,所以你的程序中

p0

=

check_rtc();

是不合适的。

主程序应该这样写:

void

main(void)

{

unsigned

i;

i

=

check_rtc();

if(i)

p1

&=

~(1

<<

6);

//低电平亮灯

else

p1

|=

(1

<<

6);

while(1);

}

不行,SPI是同步串口,232是异步串口。

SPI接收数据需要有一个稳定的时钟信号,232信号中没有。

SPI数据格式是高位在前,地位在后,232是地位在前,高位在后。需要额外转换。

有着功夫,直接用IO引脚软件爱你模拟232接口接收都比用SPI接收来的方便。

以上就是关于C语言中的问题,怎么在程序中快速更换SPI接口的CS脚全部的内容,包括:C语言中的问题,怎么在程序中快速更换SPI接口的CS脚、spi接口如何跟单片机连接、SPI接口的工作模式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9409588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存