Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI通信
5
spi通信时钟线不正常
发布于 2022-05-05 22:10:23 浏览:293
订阅该版
调试单步运行这个函数的到波形如下: ```c rt_inline rt_size_t rt_spi_send(struct rt_spi_device *device, const void *send_buf, rt_size_t length) { //发送一次数据 return rt_spi_transfer(device, send_buf, RT_NULL, length); } ```  请问时钟线波形为什么不对呢?
查看更多
5
个回答
默认排序
按发布时间排序
crystal266
2022-05-06
这家伙很懒,什么也没写!
用的什么芯片?stm32 使用 spi 需要使用 CubeMX 对 spi 的 CLK、MISO、MOSI 三个引脚的复用功能进行配置,配置后会生成 `HAL_SPI_MspInit` 函数,这个函数对 spi 的引脚的复用功能进行了初始化。在使用时使用方法如下,也可以参考文章 [使用RT-Thread studio开启SPI框架驱动OLED](https://club.rt-thread.org/ask/question/365b0e76ddd49b3f.html) 和下面的代码对照一下,看看是不是有不同的地方 ```c { struct rt_spi_device* spi_dev; struct rt_spi_configuration cfg; __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能时钟 //设备挂载到SPI总线,抽象为 spi10 设备,同时使用时还需进行 rt_spi_configure rt_hw_spi_device_attach("spi1", "spi10", GPIOA, GPIO_PIN_15); spi_dev= (struct rt_spi_device *)rt_device_find("spi10"); if (!spi_dev) { rt_kprintf("spi sample run failed! can't find %s device!\n", "spi10"); } else { // owner必须配置,因为默认为空,为空时无法进行初始化操作 spi_dev->bus->owner = spi_dev; // 必须!!! // 配置spi cfg.data_width = 8; cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_3 | RT_SPI_MSB; // 主机,模式0,高位在前 cfg.max_hz = 20 * 1000 * 1000; // SPI 接口时钟频率 rt_spi_configure(spi_dev, &cfg); // 此时才进行MspInit相关的时钟及IO口初始化 } } ```
aozima
2022-05-05
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!
SPI时钟多少?逻辑分析仪采样率多少?请设置8倍或以上采样率。 建议以CS为触发条件
paul096
2022-05-05
日拱一卒 功不唐捐
其他参数不知道怎么配置
lchnu
2022-05-06
Witness, Understand, Skill
不知道你的SPI的`HAL_SPI_MspInit`部分的代码是否配置正确?如果是基于CSP新建的工程,可以依次检查: - 是否通过cubemx配置了正确的spi口,并且将自动生成的代码`HAL_SPI_MspInit`复制到了board.c中。 - CS线是否配置好了?即通过`rt_hw_spi_device_attach`正确使能了spi device? 如,下方的GPIOA PIN0只是做个示例而已: ```c __HAL_RCC_GPIOA_CLK_ENABLE(); rt_hw_spi_device_attach("spi2", XX_SPI_DEVICE, GPIOA, GPIO_PIN_0); ``` - CS线不要配置成hardware nss形式,否则无法通信。相当于,`HAL_SPI_MspInit`函数中,只需要配置SCK,MISO,MOSI,不要配置NSS线。我看lz上方发出的波形,没看到有效的CS,clock也似乎有些问题。 - `SPI_MODE_0`依次修改为0~3进行测试。当然,更好的思路是去查看所接的硬件设备支持的模式。 祝顺利!
Assert
2022-05-06
这家伙很懒,什么也没写!
配置时不要使用 NSS,使用普通IO CS片选信号
撰写答案
登录
注册新账号
关注者
0
被浏览
293
关于作者
paul096
日拱一卒 功不唐捐
提问
11
回答
6
被采纳
0
关注TA
发私信
相关问题
1
使用spi和定时器中断时遇到shall not be used in ISR
2
SFUD 参数配置导致 spi 时钟信号异常
3
SPI传输数据,有概率卡死在spixfer函数中
4
初始化SPI时的报错
5
spi时钟信号混乱 lcd驱动移植失败
6
关于rtthread上的SPI的数据的发送
7
spi设备没办法配置
8
spi使用轮询还是中断
9
读取W25Q64只能读取128倍数的地址
10
使用spi报bus fault SCB_CFSR_BFSR
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
国产MCU移植系列教程汇总,欢迎查看!
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
基于 serialX 串口驱动移植 freemodbus
2
LPC55S69 开箱初体验
3
RT-Thread中mymqtt软件包的使用
4
RT-Thread 框架下的 SMP 支持
5
RISC-V上下文切换汇编代码注释
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
RT-Thread Nano
stm32
SCons
MQTT
ESP8266
ota
UART
packages_软件包
rtthread
I2C
RTC
freemodbus
flash
cubemx
rt-smart
W5500
定时器
FAL
PWM
ADC
BSP
SDIO
msh
AB32VG1
socket
Debug
C++_cpp
SFUD
中断
编译报错
MicroPython
keil
LVGL
dfs
本月问答贡献
RTT_逍遥
4
个答案
2
次被采纳
xiaorui
8
个答案
1
次被采纳
用户名由3_15位
6
个答案
1
次被采纳
crystal266
5
个答案
1
次被采纳
小小李sunny
2
个答案
1
次被采纳
本月文章贡献
YZRD
5
篇文章
10
次点赞
螺丝松掉的人
2
篇文章
7
次点赞
牧尘
2
篇文章
3
次点赞
RTT_逍遥
1
篇文章
12
次点赞
Digiproto
1
篇文章
6
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部