OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1730|回复: 2

将STM32MINI板提供的SPI实验历程改成模拟SPI后通信不上,有大佬可以帮忙看看有什莫问题吗?

[复制链接]

15

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2023-3-20
在线时间
26 小时
发表于 2023-8-17 11:20:32 | 显示全部楼层 |阅读模式
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);       
}
































正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2023-3-20
在线时间
26 小时
 楼主| 发表于 2023-8-17 11:23:37 | 显示全部楼层
这是我改成模拟SPI后的代码

ALIENTEK MINISTM32 实验20 SPI实验.rar

2.8 MB, 下载次数: 14

回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-8-17 11:27:32 | 显示全部楼层
并不是每个人都有和你 一样的板子,所以提问时尽量说清楚些。
“通信不上”是啥表现?和什么通信?
发送什么数据?读取什么数据?具体值说一下。
最好是用示波器看看。
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 02:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表