君正X1000平台内核SPI接口使用

article/2025/10/6 14:37:07

一.  平台环境

  1. 开发板 X1000_HALLEY2_BASEBOARD_V4.1
  2. 源码版本 ingenic-linux-kernel3.10.14-x1000-v8.2-20181116

二.  源码编译:

参照《v1000_v8.2版本编译_20181116》,可整体进行编译(即同时编译生成x.bin,kernel镜像文件,文件系统镜像文件),也可单独对每个工程进行编译;

三.  X1000内核SPI配置

需要注意的是,该开发板中由于 SFC 模块被用于 spi nor flash,已被占用,所以改用 SSI0 接口复用为标准 SPI 接口。

1.   配置 spi_board_info 和 spi_info

涉及源码文件为:arch/mips/xburst/soc-x1000/chip-x1000/halley2/common/spi_bus.c

//注:如果有多个SPI接口可以对该数组进行扩展
struct spi_board_info jz_spi0_board_info[] = {[0] = {.modalias = "spidev",       //设备名称,与驱动名称相匹配.platform_data = NULL,      //device private data.max_speed_hz = 50000000,   //设置总线最大支持频率.bus_num = 0,           //bus num.chip_select = 0,       //chip select.mode = 0,}};
int jz_spi0_devs_size = ARRAY_SIZE(jz_spi0_board_info);
#endif#ifdef CONFIG_JZ_SPI0
struct jz_spi_info spi0_info_cfg = {.chnl = 0,.bus_num = 0,.max_clk = 54000000,//SPI支持的最大时钟.num_chipselect = 1,//支持的芯片片选数,根据需要配置.allow_cs_same  = 1,.chipselect     = {GPIO_PD(1),GPIO_PD(1)},//片选引脚定义,这里是有PD1管脚
};
#endif

找到以上的函数配置接口,按照上述的参数进行配置即可。

2.  SPI 驱动相关文件

SPI驱动相关的源码文件如下:

kernel/drivers/spi/
├── jz_spi.c
├── jz_spi.h
├── spi-bitbang.c
├── spi.c
├── spidev.c

3.  内核编译配置

进入内核源码目录,即终端输入如下命令:

cd ingenic-linux-kernel3.10.14-x1000-v8.2-20181116

如下对内核进行配置(这里配置操作需要 root 管理员权限):

 sudo make menuconfig

出现内核界面选项。进入 Device Drivers->SPI support选项,这里SPI support 选择保证是选中打开的模式。如下所示:

选中如下选项:

和如下选项

按照上述的配置,选中相关的配置之后,一定要选中下面的 < save >选项进行配置的保存!!!

最后对内核进行编译,重新生成内核镜像,烧录设备中。

网上有网友提到:“另外测试发现 SSI0_DR 管脚被摄像头占用,需要屏蔽掉摄像头相关驱动。”

即进入菜单 Device Drivers -> Multimedia support -> Sensors used on soc_camera driver

我自己这里因为会用到摄像头采图功能,所以,去掉摄像头驱动,编译成的X1000内核 uImage文件,烧录开发板导致系统一直重启,所以,我没有屏蔽掉摄像头驱动。
 

经过上面一轮内核配置,通过调试串口查看,/dev下的 SPI 设备结点还是存在问题。

查看了一下硬件IO口使用情况,如下核心板SPI电路图:

与如下底板的电路图进行对比,数据手册的IO说明 SPI 的硬件IO口存在复用问题:

结合上述电路图与 X1000数据手册,可知 SPI 与 IIC 口公用,都连接 EEPROM。即开发板提供了一个两种接口方式(SPI与IIC通信方式的)EEPROM存储器。因此,考虑内核关闭 IIC 通信方式的EEPROM。

解决办法:内核关闭 IIC 通信的EEPROM 功能,如下所示:

配置内核,即终端输入 sudo make menuconfig 命令。

进入内核选项 Device Drivers->Misc devices->EEPROM support 选项。

取消掉上图箭头所指的 I2C EEPROMs 选项,并选中下面 < Save > 进行保存。

最后对内核进行编译,重新生成内核镜像,烧录设备中。

4.  测试 SPI 接口

SPI接口测试如下:

首先,通过调试串口,可查看开发板文件系统/dev目录下,是否有spi设备节点存在;

然后可写 SPI 应用程序,对SPI通信进行测试;

经过测试,SPI 通信正常。

总结:

在内核代码中关于SPI 驱动代码部分,例如设备注册等操作函数还需要编译进内核中,这样在/dev目录下才会生成 SPI 设备结点,以供应用程序使用。

关于SPI 驱动代码注册进内核的部分,以后文章进行详细的说明。


http://chatgpt.dhexx.cn/article/3QLquXxG.shtml

相关文章

算法工程师的职业发展前景思考和总结

本篇文章结合职友集数据对数据工程师【dba】通过个人理解和对职业行情现状进行个人主观总结。 声明&#xff1a;仅供参考&#xff0c;不是绝对&#xff0c;因人而异。 日期&#xff1a;2022年6月1日 作者&#xff1a;任聪聪 了解什么是算法工程师 首先算法工程师就是&#xff…

Python实现xls、xlsx文件内容替换的自定义函数

本篇文章主要讲解通过python批量替换xls、xlsx文件中的字符串的函数代码实例教程 日期:2023年5月9日 作者:任聪聪 版本:python3.9 前提准备 安装:xlrd,xlwt,openpyxl pip install 包名引入: import xlrd,xlwt,openpyxl实际效果: 可批量替换xls、xlsx两种文件类型,效…

Python实现doc、docx批量文本内容替换的代码实例

本篇文章主要讲解通过python及三方库实现doc、docx的批量文本内容替换的方法教程 日期:2023年5月10日 作者:任聪聪 python3.9版本 前提准备 安装: docx、win32 pip install 包名引入: import win32com.client as win32 import docx实际效果 可以修改doc、docx中包含图片…

程序员该怎么创业才比较靠谱?

本篇文章&#xff1a;主要讲解粉丝后台提问&#xff0c;创业相关问题。 作者&#xff1a;任聪聪 日期&#xff1a;2021年10月19日 宇宙的尽头绝对不是打工&#xff0c;打工是不可能的&#xff0c;程序员打一生的工时赚不到做企业能赚到的钱的。如果你月薪15k&#xff0c;到手11…

thinkphp5 线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法汇总

本篇文章主要讲解:thinkphp5 项目线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法教程 作者:任聪聪 日期:2023年4月17日 thinkphp版本5.1 现象说明: 线下测试环境,显示可以看到界面 部署到线上配置完毕后发现页面空白 在php中写入echo 1232…

AI数据标注工程师这个职业怎么样?

本篇文章主要讲解ai数据标注工程师这个职业的具体情况和相关的职业前景 作者&#xff1a;任聪聪 日期&#xff1a;2023年4月18日 数据是ai的灵魂&#xff0c;自然界中相对应的数据都活多少存在不准确、杂乱、无效等属性&#xff0c;需要人为进行收集、整理、分类和处理。其中ai…

js利用正则提取文本中所有符合的自定义文本内容方法教程

本篇文章主要讲解&#xff0c;使用js提取文本中所有出现的特定字符&#xff0c;保存在数组中并返回的实现方法。 日期&#xff1a;2022年12月9日 作者&#xff1a;任聪聪 一、使用的场景说明 一个超长文本中出现了n个固定规则的字符&#xff0c;但是需要将其进行提取并存在数组…

如何主动增加自己的开源项目star数的方法汇总

本篇文章主要讲解&#xff0c;通过自媒体、短视频、网络平台等渠道形式增加自己的开源项目的曝光度以增加star数的方法。 作者&#xff1a;任聪聪 日期&#xff1a;2023年4月20日 开源项目的star数在某些找工作的情况下是有一定的加分的&#xff0c;故此价值是一定的。但是自己…

【Cocos新手入门】 cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法

本篇文章主要讲解使用cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法。 作者&#xff1a;任聪聪 日期&#xff1a;2023年2月7日 cocos 引擎版本&#xff1a;2.4.3 在我们实现select框的时候&#xff0c;我们可以通过按钮显示隐藏某个元素来达成这个目标&…

Python给一个exe执行文件注册持续性的快捷键(热键)的代码实例

本篇文章主要讲解通过python给一个exe文件绑定一个快捷键、并取消快捷键(热键)的实操方法。 日期:2023年6月11日 作者:任聪聪 实现按下快捷键即可启动软件的效果说明 启动软件注册热键呼出其他软件或本体的效果说明: 演示材料说明:在download文件目录下存放一个可执行的…

AI模型训练、实施工程师的职业前景怎么样?

本篇文章主要讲解ai模型训练、模型实施工程师的职业前景和趋势分析 作者&#xff1a;任聪聪 日期&#xff1a;2023年4月18日 ai训练师、模型实施工程师&#xff0c;一般是指opencv、pytorh、python、java、机械学习、深度学习、图像识别、视频检测等领域的模型数据训练工作。 …

批量提交网站url到百度进行提升索引量的方法

本篇文章主要讲解通过百度的推送接口&#xff0c;向百度批量提交网站url并让百度加快收录网站页面的方法 作者&#xff1a;任聪聪 日期&#xff1a;2023年4月7日 前置条件 1.需要去百度站长平台&#xff0c;绑定自己的域名。前往用户中心&#xff0c;添加网站。 注&#xff1…

抖音开发者工具配置抖音小游戏为横屏显示的方法

本篇文章主要讲解&#xff0c;使用抖音开发者工具配置抖音小游戏为横屏显示的方法 作者&#xff1a;任聪聪 日期&#xff1a;2023年2月3日 问题现象 横屏的游戏发布到抖音开发者工具中发现是竖屏显示 实际原因 game.json的配置为竖屏导致。改为横屏即可横屏显示游戏。 {&q…

python动态加载tkinter图形化元素的方法

本篇文章主要讲解&#xff0c;python动态加载tkinter元素的方法 日期&#xff1a;2022年6月2日 作者&#xff1a;任聪聪 利用tkinter做动态的表单界面实际上是很简单的&#xff0c;只需要对界面进行update即可实现&#xff0c;每一个元素实际上都可动态加载。 动态加载表单元素…

微信小程序流量主提升ecpm的一些方法

本篇文章主要讲解:微信小程序流量主提升ecpm的一些方法 日期:2023年1月19日 作者:任聪聪 一、对ecpm的疑问和科普 什么是ecpm ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。 ecpm为什么会低? 微信官方…

微信小程序、小游戏的流量主一般可以赚多少钱?

本篇文章主要科普小程序、小游戏流量主一般赚钱的实际情况&#xff0c;通过在下长期运营的经验汇总而成。 日期&#xff1a;2023年2月26日 作者&#xff1a;任聪聪 小程序、小程序满1000用户后即可开通流量主&#xff0c;但实际上很多人并没有传说中的那种日赚几千的流量收入的…

python+pyqt制作的可最小化到托盘的桌面图形应用代码实例

本篇文章主要讲解使用python、pyqt制作的可以最小化到托盘的桌面图形应用实例。 日期:2023年6月11日 作者:任聪聪 效果演示 说明:实现桌面应用显示窗口,关闭窗口缩小到托盘,点击托盘显示窗口,邮件图标显示退出按钮,点击退出按钮即可关闭应用。 动态演示: 实际情况:…

领取的AWS亚马逊云服务器到期会扣费的问题解决办法。

本篇文章主要讲解&#xff0c;领取的AWS亚马逊服务器到期后会持续扣费问题的解决办法。 作者&#xff1a;任聪聪 日期&#xff1a;2023年6月8日 关于aws服务器一年免费期限到期后扣费的问题&#xff0c;网络上的文章并不是很全&#xff0c;故此我通过个人的经验进行了如下的教程…

利用moviepy库制作好用的MP4、mov、mav、avi等视频类型转换gif图片的工具

说明:本篇文章主要讲解,利用moviepy库制作可以转换所有视频格式成gif 的工具。 作者:任聪聪 日期:2022年3月8日 python的库真的很多,也很好用,很实在,站在巨人的肩膀上,真的很轻松,只需要加上三句话,就能实现。 效果展示: 实例说明 注意代码片段建议通过pycharm复…

SEO新手快速入门教程

说明&#xff1a;本篇文章主要讲解&#xff0c;seo的基础知识&#xff0c;以及seo的实际应用情况和seo究竟是什么&#xff0c;达到什么目的。 适用&#xff1a;新手seo从业人员或者需要了解seo的同学。 建议&#xff1a;这是本人积累出的实际SEO干货&#xff0c;建议直接收藏。…