找回密码
 立即注册
楼主: orange

在进行SPI通信的时候,引脚模式该怎么设置

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-6-24 15:40:27 | 显示全部楼层
erci*** 发表于 2025-6-24 15:37
SPDAT赋值是发送
SPDAT给别的变量赋值是接收。
下面贴的图不是仿真,是逻辑分析仪查的波形,用的DSLogic ...

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-7-1 16:32:46 | 显示全部楼层
erci*** 发表于 2025-6-24 15:37
SPDAT赋值是发送
SPDAT给别的变量赋值是接收。
下面贴的图不是仿真,是逻辑分析仪查的波形,用的DSLogic ...

如果要测试这个程序,只要把串口接到USB转串口,通过串口助手就可以查看SPI发送的数据了么

点评

是串口发给SPI外设通过MOSI引脚发出去,要看回复还得接个Spi从设,它再回回来透传给串口给上位机。  详情 回复 发表于 2025-7-1 16:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-1 16:44:05 | 显示全部楼层
ora*** 发表于 2025-7-1 16:32
如果要测试这个程序,只要把串口接到USB转串口,通过串口助手就可以查看SPI发送的数据了么 ...

是串口发给SPI外设通过MOSI引脚发出去,要看回复还得接个Spi从设,它再回回来透传给串口给上位机。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-7-1 17:02:26 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=174560&ptid=18521][color=#999999]ercircle 发表于 2025-7-1 16:44[/color][/url][/size] 是串口发给SPI外设通过MOSI引脚发出去,要看回复还得接个Spi从设,它再回回来透传给串口给上位机。 ...[/quote]

image.png

是这样么

点评

是的  详情 回复 发表于 2025-7-1 17:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-1 17:06:30 | 显示全部楼层

是的
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-7-1 17:59:04 | 显示全部楼层

终于想明白是怎么回事了,我太笨了,
一开机,就会通过串口给上位机发送个字符串:"SPI与UART透传程序";
然后上位机发送数据,触发串口中断函数,将接收到的数据缓存,通过SPI发送,
从机如果给主机发送数据,会触发下面的中断函数吗,这个if条件看不太明白,触发中断后,主机设置的是主机模式,还会执行到else里面给SPI_RxBuffer赋值
void SPI_ISR_Handler() interrupt SPI_VECTOR
{
        if(SPCTL & 0x10)        //主机模式
        {
                B_SPI_Busy = 0;
        }
        else                                                        //从机模式
        {
                if(SPI_RxCnt >= SPI_BUF_LENTH)                SPI_RxCnt = 0;
                SPI_RxBuffer[SPI_RxCnt++] = SPDAT;
                SPI_RxTimerOut = 5;
        }
        SPSTAT = SPIF + WCOL;        //清0 SPIF和WCOL标志
}

点评

这个例子是在8H库函数例子上改的,只是为了验证SPI_SW(SPI_P12_P13_P14_P15); 可以看下原始代码,16-SPI互为主从-串口1透传,是通过切换主从的方式收发消息。 还有一种办法就是一直主机模式,要收消息时发送00或者F  详情 回复 发表于 2025-7-1 18:20
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-1 18:20:14 | 显示全部楼层
ora*** 发表于 2025-7-1 17:59
终于想明白是怎么回事了,我太笨了,
一开机,就会通过串口给上位机发送个字符串:"SPI与UART透传程序";
然后 ...

这个例子是在8H库函数例子上改的,只是为了验证SPI_SW(SPI_P12_P13_P14_P15);

可以看下原始代码,16-SPI互为主从-串口1透传,是通过切换主从的方式收发消息。
还有一种办法就是一直主机模式,要收消息时发送00或者FF之类的无用字节驱动从机回传消息。
https://www.stcaimcu.com/data/do ... H-LIB-DEMO-CODE.zip
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-7-2 11:54:37 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=174580&ptid=18521][color=#999999]ercircle 发表于 2025-7-1 18:20[/color][/url][/size] 这个例子是在8H库函数例子上改的,只是为了验证SPI_SW(SPI_P12_P13_P14_P15); 可以看下原始代码,16-SPI ...[/quote]

image.png

image.png

这个config里面定义的主时钟和用ISP下载时候选的时钟有啥关系,

下载时候,要选的一样么

如果不一样,以哪个为准

或者说程序里面定义了主时钟,下载的时候可以把这个勾选去掉

点评

必须保持一样,一般是计算波特率用的,不一样串口会乱码。  详情 回复 发表于 2025-7-2 12:01
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-2 12:01:37 | 显示全部楼层
ora*** 发表于 2025-7-2 11:54
这个config里面定义的主时钟和用ISP下载时候选的时钟有啥关系,
下载时候,要选的一样么
如果不一样,以哪 ...

必须保持一样,一般是计算波特率用的,不一样串口会乱码。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-07-31 08:45:21

10

主题

67

回帖

960

积分

高级会员

积分
960
发表于 2025-7-2 17:47:58 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=174684&ptid=18521][color=#999999]ercircle 发表于 2025-7-2 12:01[/color][/url][/size] 必须保持一样,一般是计算波特率用的,不一样串口会乱码。[/quote]

为什么我一编译,c文件下面的.h文件就没了

image.png

打开下载的工程:

image.png

点评

编译成功后会显示,编译失败了不显示,编译器决定的  详情 回复 发表于 2025-7-2 17:51
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 03:38 , Processed in 0.131606 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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