当前位置:网站首页>移植DAC芯片MCP4725驱动到NUC980
移植DAC芯片MCP4725驱动到NUC980
2022-07-06 17:35:00 【Ti-laser】
本文介绍了移植DAC芯片MCP4725的方法。
因为官方提供的linux-4.4.x虽然有一个mcp4725.c的驱动,但该驱动适合无dts的老的应用场景,而我的系统使用了dts树所以需要更换该驱动,具体方法为:
从网站linux/mcp4725.c at master · torvalds/linux · GitHub
下载mcp4725.c,下载的该文件要做下面调整才能被正常编译使用,具体如下:
1 增加头文件:#include <linux/of_device.h>
2 找到IIO_ENUM_AVAILABLE并删除第二个参数,变成如下形式:
IIO_ENUM_AVAILABLE("powerdown_mode",
&mcp472x_powerdown_mode_enum[MCP4725]),
IIO_ENUM_AVAILABLE("powerdown_mode",
&mcp472x_powerdown_mode_enum[MCP4726]),
3 找到device_get_match_data改成of_device_get_match_data
if (dev_fwnode(&client->dev))
data->id = (uintptr_t)of_device_get_match_data(&client->dev);
else
......
4 替换include/linux/iio/dac/mcp4725.h为下面内容:
....
struct mcp4725_platform_data {
bool use_vref;
bool vref_buffered;
};
....
5 修改文件:
drivers/base/property.c +108,允许dev_fwnode 被外部调用:
struct fwnode_handle *dev_fwnode(struct device *dev)
{
return IS_ENABLED(CONFIG_OF) && dev->of_node ?
&dev->of_node->fwnode : dev->fwnode;
}
EXPORT_SYMBOL_GPL(dev_fwnode);
6 调整include/linux/property.h,对输出的函数进行声明
struct fwnode_handle *dev_fwnode(struct device *dev);
7 因为DAC芯片是挂接在I2c1总线上,需要修改文件nuc980-iot.dtsi,增加蓝色部分:
i2c1: [email protected] {
compatible = "nuvoton,nuc980-i2c1";
.........
#address-cells = <1>;
#size-cells = <0>;
compatible = "microchip,mcp4725";
reg = <0x61>;
};
编译正常后刷写到板子内部后进入/sys/devices/iio:deviceX即可看到节点信息,这里的X请根据自己的系统实际情况进行替换。
可以写入DA值然后实际用万用表进行测试验证。
echo 2000 > out_voltage0_raw
边栏推荐
- C language - array
- Your cache folder contains root-owned files, due to a bug in npm ERR! previous versions of npm which
- 云呐|工单管理办法,如何开展工单管理
- Lldp compatible CDP function configuration
- [HFCTF2020]BabyUpload session解析引擎
- 从零开始匹配vim(0)——vimscript 简介
- Maidong Internet won the bid of Beijing life insurance to boost customers' brand value
- The cost of returning tables in MySQL
- 让我们,从头到尾,通透网络I/O模型
- MySQL中回表的代价
猜你喜欢
界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
系统休眠文件可以删除吗 系统休眠文件怎么删除
[牛客] [NOIP2015]跳石头
Make a simple graphical interface with Tkinter
云呐|工单管理办法,如何开展工单管理
JTAG debugging experience of arm bare board debugging
2022 Google CTF SEGFAULT LABYRINTH wp
Windows installation mysql8 (5 minutes)
[Niuke] b-complete square
Batch obtain the latitude coordinates of all administrative regions in China (to the county level)
随机推荐
ESP Arduino (IV) PWM waveform control output
Dell Notebook Periodic Flash Screen Fault
Tensorflow 1.14 specify GPU running settings
What are the differences between Oracle Linux and CentOS?
JTAG debugging experience of arm bare board debugging
NEON优化:性能优化经验总结
Atomic in golang, and cas Operations
NEON优化:log10函数的优化案例
taro3.*中使用 dva 入门级别的哦
HMM notes
Realize incremental data synchronization between MySQL and ES
C # method of calculating lunar calendar date 2022
Building a dream in the digital era, the Xi'an station of the city chain science and Technology Strategy Summit ended smoothly
The difference between spin and sleep
Let's see through the network i/o model from beginning to end
MySQL中回表的代价
7.6模拟赛总结
LLDP兼容CDP功能配置
Taro2.* 小程序配置分享微信朋友圈
Chenglian premium products has completed the first step to enter the international capital market by taking shares in halber international