初级会员
- 积分
- 76
- 金钱
- 76
- 注册时间
- 2023-3-20
- 在线时间
- 26 小时
|
10金钱
我看源代码设置的是时钟线空闲高,第二个边沿采样
SPI.H文件
#ifndef __SPI_H
#define __SPI_H
#include "sys.h"
/**********************************************************************/
//SPI时钟 PB13
#define SPI_SCK_H GPIO_SetBits(GPIOA, GPIO_Pin_5);
#define SPI_SCK_L GPIO_ResetBits(GPIOA, GPIO_Pin_5);
/**********************************************************************/
//SPI MOSI PB15
#define SPI_MOSI_H GPIO_SetBits(GPIOA, GPIO_Pin_7);
#define SPI_MOSI_L GPIO_ResetBits(GPIOA, GPIO_Pin_7);
/**********************************************************************/
//SPI MISO PB14
#define SPI_MISO_READ GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6)
void SPI1_Init(void); //初始化SPI口
//void SPI1_SetSpeed(u8 SpeedSet); //设置SPI速度
u8 SPI1_ReadWriteByte(u8 TxData);//SPI总线读写一个字节
#endif
SPI.C文件
#include "spi.h"
#include "delay.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//Mini STM32开发板
//SPI 驱动函数
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2010/6/13
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 正点原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25X16/24L01/JF24C
//SPI口初始化
//这里针是对SPI1的初始化
SPI_InitTypeDef SPI_InitStructure;
void SPI1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init( GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init( GPIOA, &GPIO_InitStructure);
}
u8 SPI1_ReadWriteByte(u8 TxData)
{
u8 i=0;
u8 RxData=0x00;
for (i=0;i<8;i++)
{
if(TxData&0x80==0x80)
{
SPI_MOSI_H;
}
else
{
SPI_MOSI_L;
}
TxData=TxData<<1;
RxData=RxData<<1;
delay_us(2);
SPI_SCK_L;
delay_us(2);
if(SPI_MISO_READ==1)
{
RxData=RxData+1;
}
SPI_SCK_H;
}
return (RxData);
}
|
|