• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > linuxSPI下调用write写,但用read得到的值为0问题

linuxSPI下调用write写,但用read得到的值为0问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了read and write,read write,look read and write,read and write翻译,readwritethink等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: linux SPI下调用write写,但用read得到的值为0问题
描述:

采用kernel\Documentation\spi\ spidev_test.c测试SPI的自发自收,spidev_test.c通过下面函数实现收发,测试OK,但我改为用write()写,用read来读,但读取到的全为0,不知道为什么?

static void tda8007_transfer(int fd)
{
int ret;
uint8_t tx[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x40, 0x00, 0x00, 0x00, 0x00, 0x95,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xAD,
0xF0, 0x0D,
};
uint8_t rx[ARRAY_SIZE(tx)] = {0, };
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)rx,
.len = ARRAY_SIZE(tx),
.delay_usecs = delay,
.speed_hz = speed,
.bits_per_word = bits,
};
ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
if (ret < 1)
pabort("can't send spi message");
for (ret = 0; ret < ARRAY_SIZE(tx); ret++) {
if (!(ret % 6))
puts("");
printf("%.2X ", rx[ret]);
}
puts("");
}


解决方案1:

,用示波器观察,spi调用read()函数读从设备时,其还会向从设备写0x00,所以到的都是0

解决方案2:

两块板子都与共地么?spi 发送和读数据就是一个回环,主机给从机提供时钟,你自己试着按着按着时序读下对应引脚的时序是不是你发送的数据,还有你可以把spi时钟调低一点,主从时钟最好匹配下

解决方案3:

确认你在读miso时,mosi上是你发送的数据。

解决方案4:

自发自收不需要clk信号的,你测用示波器测试下相关的引脚时序图

解决方案5:

还没解决?
试试这个例子:
http://www.cnblogs.com/sankye/p/3955630.html


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • linuxSPI下调用write写,但用read得到的值为0问题

相关文章

  • 2017-06-05 WinCE_CAB_Manager30_绿色破解版一直提示没有注册类
  • 2017-06-05 怎样用bind9实现对特定地址的解析
  • 2017-06-05 求指纹定位的MATLAB仿真代码
  • 2017-06-05 vs2005打开自己建的工程有错误求助求助!!
  • 2017-06-05 北京的内核编程高手进来啊?有挑战性的
  • 2017-06-05 USB30上位机程序与FPGA硬件数据传输不稳定怎么办
  • 2017-06-05 求救!!C#在wince中上传文件到webservice
  • 2017-06-05 帮忙看看我的ISD1420语音芯片的原理图正确不?怎么录音没有成功呢,MIC部分电路我看有很多接法,不知道这么接对不对?
  • 2017-06-17嵌入式系统的定义
  • 2017-06-05 android串口开发不能发送数据

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • DOS下液晶板驱动开发及图形函数编写
    • 关于51单片机的中断实现多任务的问题
    • 关于2003server不能联网问题急!
    • windowsoffice2003大神们,基于wince下文件对话框怎么设置
    • wince60socket连接问题
    • 高分求教,在线等待中。。。。。
    • PCMCIA驱动
    • STM32从STOP模式唤醒后程序从哪执行?
    • vxsim和开发主机之间传输文件改怎么做???
    • 求一个软件模拟IIC程序,基于STM32F2系列

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有