orange
发表于 2025-6-24 15:40:27
ercircle 发表于 2025-6-24 15:37
SPDAT赋值是发送
SPDAT给别的变量赋值是接收。
下面贴的图不是仿真,是逻辑分析仪查的波形,用的DSLogic ...
{:4_188:}{:4_188:}{:4_188:}
orange
发表于 2025-7-1 16:32:46
ercircle 发表于 2025-6-24 15:37
SPDAT赋值是发送
SPDAT给别的变量赋值是接收。
下面贴的图不是仿真,是逻辑分析仪查的波形,用的DSLogic ...
如果要测试这个程序,只要把串口接到USB转串口,通过串口助手就可以查看SPI发送的数据了么
ercircle
发表于 2025-7-1 16:44:05
orange 发表于 2025-7-1 16:32
如果要测试这个程序,只要把串口接到USB转串口,通过串口助手就可以查看SPI发送的数据了么 ...
是串口发给SPI外设通过MOSI引脚发出去,要看回复还得接个Spi从设,它再回回来透传给串口给上位机。
orange
发表于 2025-7-1 17:02:26
ercircle 发表于 2025-7-1 16:44
是串口发给SPI外设通过MOSI引脚发出去,要看回复还得接个Spi从设,它再回回来透传给串口给上位机。 ...
<p><img src="data/attachment/forum/202507/01/170213zfj2p68j2pv1f21g.png" alt="image.png" title="image.png" /></p>
<p>是这样么</p>
ercircle
发表于 2025-7-1 17:06:30
orange 发表于 2025-7-1 17:02
是这样么
是的
orange
发表于 2025-7-1 17:59:04
ercircle 发表于 2025-7-1 17:06
是的
终于想明白是怎么回事了,我太笨了{:4_192:},
一开机,就会通过串口给上位机发送个字符串:"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 = SPDAT;
SPI_RxTimerOut = 5;
}
SPSTAT = SPIF + WCOL; //清0 SPIF和WCOL标志
}
ercircle
发表于 2025-7-1 18:20:14
orange 发表于 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/download/DemoCode/STC8G-STC8H-LIB-DEMO-CODE.zip
orange
发表于 2025-7-2 11:54:37
ercircle 发表于 2025-7-1 18:20
这个例子是在8H库函数例子上改的,只是为了验证SPI_SW(SPI_P12_P13_P14_P15);
可以看下原始代码,16-SPI ...
<p><img src="data/attachment/forum/202507/02/115055nvhhzt2vq3772ttp.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202507/02/115335mwiwyvxxyxwwy7bv.png" alt="image.png" title="image.png" /></p>
<p>这个config里面定义的主时钟和用ISP下载时候选的时钟有啥关系,</p>
<p>下载时候,要选的一样么</p>
<p>如果不一样,以哪个为准</p>
<p>或者说程序里面定义了主时钟,下载的时候可以把这个勾选去掉</p>
ercircle
发表于 2025-7-2 12:01:37
orange 发表于 2025-7-2 11:54
这个config里面定义的主时钟和用ISP下载时候选的时钟有啥关系,
下载时候,要选的一样么
如果不一样,以哪 ...
必须保持一样,一般是计算波特率用的,不一样串口会乱码。
orange
发表于 2025-7-2 17:47:58
ercircle 发表于 2025-7-2 12:01
必须保持一样,一般是计算波特率用的,不一样串口会乱码。
<p>为什么我一编译,c文件下面的.h文件就没了</p>
<p><img src="data/attachment/forum/202507/02/174631rr65c11g5igarntw.png" alt="image.png" title="image.png" /></p>
<p>打开下载的工程:</p>
<p><img src="data/attachment/forum/202507/02/174731c0ix2xjzo4qr7xoo.png" alt="image.png" title="image.png" /></p>