Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI从机
硬件spi从机接收为什么会传输失败,但是接收缓冲区又可以完整打印出来,
发布于 2025-02-13 16:30:48 浏览:14
订阅该版
``` [2] D/NO_TAG: SPI MASTER send successful! [31m[1006] E/drv.spi: SPI transfer error: 3 [0m[31m[1010] E/spi.core: SPI device spi30 transfer failed [0m SPI rx_buf : ???????????????123456787654321 ``` 为什么会传输失败,但是接收缓冲区又可以完整打印出来,以下是我的代码: ```c #include "master_slave.h" #define MASTER_BUS_NAME "spi2" #define MASTER_DEVICE_NAME "spi20" #define MASTER_CS GET_PIN(B, 12) #define SLAVE_DEVICE_NAME "spi30" #define SLAVE_BUS_NAME "spi3" #define SLAVE_CS GET_PIN(A, 4) #define BUFFER_SIZE 32 struct rt_spi_device *slave_device; struct rt_spi_device *master_device; void master_send_slave_recv(const char *str) { rt_size_t len = strlen(str); rt_uint8_t tx_buf[len + 1],rx_buf[len + 1]; memcpy(tx_buf, str, len); tx_buf[len ] = '\0'; rt_ssize_t result = rt_device_write( (rt_device_t) master_device, 0, tx_buf, len); if(result > 0) LOG_D("SPI MASTER send successful!\n"); rt_device_read((rt_device_t) slave_device, 0, rx_buf, len); rt_kprintf("\n SPI rx_buf : %s\n",rx_buf); } /* 主从机初始化并配置 */ void master_slave_init() { rt_err_t result; // __HAL_RCC_GPIOA_CLK_ENABLE(); // __HAL_RCC_GPIOB_CLK_ENABLE(); rt_hw_spi_device_attach(MASTER_BUS_NAME, MASTER_DEVICE_NAME, MASTER_CS); rt_hw_spi_device_attach(SLAVE_BUS_NAME, SLAVE_DEVICE_NAME, SLAVE_CS); master_device = (struct rt_spi_device *)rt_device_find(MASTER_DEVICE_NAME); slave_device = (struct rt_spi_device *)rt_device_find(SLAVE_DEVICE_NAME); if (master_device == NULL || slave_device == NULL) { rt_kprintf("spi failed! can't find %s device!\n", MASTER_DEVICE_NAME); } { // 配置SPI2 master_device->bus->owner = master_device; struct rt_spi_configuration cfg; cfg.data_width = 8; cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB; cfg.max_hz = 1 * 1000 *1000; /* 1M */ result = rt_spi_configure(master_device, &cfg); if (result != RT_EOK) rt_kprintf("SPI2 configuration failed!\n"); } { // 配置SPI3 slave_device->bus->owner = slave_device; struct rt_spi_configuration cfg; cfg.data_width = 8; cfg.mode = RT_SPI_SLAVE | RT_SPI_MODE_0 | RT_SPI_MSB; cfg.max_hz = 1 * 1000 *1000; /* 1M */ result = rt_spi_configure(slave_device, &cfg); if (result != RT_EOK) rt_kprintf("SPI3 configuration failed!\n"); } rt_device_open( (rt_device_t) master_device, RT_DEVICE_FLAG_RDWR); rt_device_open( (rt_device_t) slave_device, RT_DEVICE_FLAG_RDWR); } char tx_data[LEN] = "123456787654321"; int main(void) { master_slave_init(); master_send_slave_recv(tx_data); return RT_EOK; } ```
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
14
关于作者
xu123456
这家伙很懒,什么也没写!
提问
3
回答
0
被采纳
0
关注TA
发私信
相关问题
1
rtt的SPI作从机怎么编程?我尝试了,收不到数据!
2
请问基于rt-thread的spi slave (从机)应该怎么做
3
spi dma 中断接收的问题
4
rt_thread_delay中,关/开中断,导致SPI从机接收时数据丢失
5
freemodbus 从机 运行过程中怎么修改从机地址呢?
6
RT-Thread如何开启SPI中断
7
SPI配置为从模式,设备下电再上电,不能触发SPI中断
8
MCU采用PSI从设备通讯,发送数据到主设备,出现数据重复
9
Gd32 SPI从设备中断,有时无法收到数据,原因不明确
10
rt-thread的spi框架,rt_spi_transfer的详细功能细节理解
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
SystemView线程名字不显示
2
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
3
免费申请 | FRDM-MCXA156评测活动发布!
4
RT-Thread嵌入式操作系统专业培训班登陆郑州!
5
RT thread源码分析——多线程机制的基石
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
7
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部