Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PIN_GPIO通用驱动
设备驱动
5
SPI通信时,PIN设备驱动使用异常,出现毛刺信号?
发布于 2021-07-29 09:01:17 浏览:1674
订阅该版
1、使用rt-thread studio开发SPI与FPGA通信功能,发现FPGA读取数据偶尔会出现异常。 正常时的波形如下图所示: ![CS正常数据.PNG](https://oss-club.rt-thread.org/uploads/20210729/efca5a9e34a5d5dc6d5aefef2f3770ad.png) 异常时CS出现毛刺 波形如下图所示:![CS异常数据.PNG](https://oss-club.rt-thread.org/uploads/20210729/ffe84556060ffdc01973f3518254362c.png.webp) 有两个疑问: 1、使用PIN驱动会产生毛刺信号,不使用PIN驱动不会产生毛刺信号 2、CS拉低以后,很久才会开始发送数据。数据发送完成后,需要很久才会拉高CS 实验代码如下: ```c #include
#include
#include
#include "drv_common.h" #define LOG_TAG "SPI" #define LOG_LVL LOG_LVL_DBG #include
#define TEST_DEVICE_NAME "spi2" static struct rt_spi_device *spi_dev_com; rt_uint8_t sendbuff[26]; rt_uint8_t rebuff[26]; void test_spi(int arg,char **argv) { rt_err_t ret; rt_size_t len; static rt_uint8_t aa = 0; if(aa == 0) { aa = 1; __HAL_RCC_GPIOI_CLK_ENABLE(); rt_hw_spi_device_attach("spi2", "spi20", GPIOI, GPIO_PIN_0); LOG_I("This is spi test "); for(rt_uint8_t i=0;i<26;i++) { sendbuff[i] = 0x10+i; } spi_dev_com = (struct rt_spi_device *)rt_device_find("spi20"); if(!spi_dev_com) { LOG_E("not find spi device"); return; } else { struct rt_spi_configuration cfg; cfg.data_width = 8; cfg.max_hz = 10*1000*1000; cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_3 | RT_SPI_MSB; ret = rt_spi_configure(spi_dev_com, &cfg); if(ret != RT_EOK) { LOG_E("Config spi failed"); return; } } } len = rt_spi_transfer(spi_dev_com, sendbuff, rebuff, 26); if(len != 26) { LOG_E("spi write erro"); } else { for(int i=0;i<26;i++) rt_kprintf("%4d ",rebuff[i]); } rt_kprintf("\r\n"); } MSH_CMD_EXPORT(test_spi,test_spi ```
查看更多
出出啊
2021-07-29
恃人不如自恃,人之为己者不如己之自为也
1. 你说的使用pin驱动和不使用pin驱动,仅仅是打开 RT_USING_PIN 这个宏? 2. HAL_SPI_MspInit 里怎么初始化的,初始化没问题吧 3. 片选脚外接上拉电阻看一下。有可能是芯片内供电不稳定引起的。 前不久有个人是 io 中断脚,长低,上升沿中断,经常自己出尖刺,和你的一样,但是他的搞下拉也不管用,引脚直接接地也不管用,最后换成了长高,下降沿中断。也就是把下拉换成了上拉。
4
个回答
默认排序
按发布时间排序
adaphoto
2021-07-29
这家伙很懒,什么也没写!
CS引脚上并联一个小电容看看能否消除毛刺。
红枫
认证专家
2021-07-29
这家伙很懒,什么也没写!
看cs毛刺出现的位置和mosi下降沿关联度较高,可以查查两者之间怎么耦合的?
freedom195
2021-07-29
好好学习,天天向上
片选拉低后,要很久才会发数据,跟结束后,要很久片选才能拉上,这个取决于spi的transfer函数
撰写答案
登录
注册新账号
关注者
0
被浏览
1.7k
关于作者
梦醒了主
这家伙很懒,什么也没写!
提问
2
回答
0
被采纳
0
关注TA
发私信
相关问题
1
让成员函数能作为rt_device中的回调函数
2
关于设备配置时延时的处理
3
rt_device_set_rx_indicate设置的回调如何传递参数?
4
关于 输入捕获 驱动的
5
关于设备驱动的迷茫与疑惑
6
关于rtthread中各种驱动的问题
7
drv_hwtimer 和hwtimer关系是啥?
8
RTT有没有接口文档,可以用于写一些自己创建的设备的这些文档?
9
i2c设备驱动为什么没有速率设置
10
UART设备中断接收及轮询发送
推荐文章
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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部