在rt5350 openwrt系统下spi的rtc ds3234配置
来源:互联网 发布:mac 拷贝隐藏文件 编辑:程序博客网 时间:2024/05/23 13:02
驱动配置(kernel_menuconfig)
Device Drivers --->
[*] SPIsupport --->
<*> Ralink RT288x SPIController
[*]Real Time Clock --->
***SPI RTC drivers ***
<*> Maxim/Dallas DS3234 //开启rtc的驱动
dts配置
对trunk/target/linux/ramips/dts/MPRA2.dts(在menuconfig里选择的配置文件)进行rtc的配置
palmbus@10000000 {
……
spi@b00 {
status = "okay";
m25p80@0 {
……
};
ds3234@1 {
#address-cells =<1>;
#size-cells = <0>;
compatible ="dallas,ds3234"; ##ds3234的驱动属性
spi-max-frequency =<2000000>; ##最大时钟频率2000000
reg = <1>; ##片选1
};
};
};
dts中spi的结点的加载过程会调用trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_rt305x/linux-3.18.11/drivers/spi/spi.c中的
static void of_register_spi_devices(structspi_master *master) 函数可看到对结点属性的解析,可根据自身需求进行配置。
例如reg属性的解析在这里(及片选)
/* Device address */
rc= of_property_read_u32(nc, "reg", &value);
if(rc) {
dev_err(&master->dev,"%s has no valid 'reg' property (%d)\n",
nc->full_name,rc);
spi_dev_put(spi);
continue;
}
spi->chip_select= value;
编译烧写后,执行hwhwclock–w再用hwhwclock –r 读取rtc的时间测试。
发现出现hwclock: RTC_RD_TIME: Invalid argument 读取失败
于是用dmesg| grep ds323查看相关的打印
[ 0.830000] ds3234 spi32766.1: Control Reg:0x00
[ 0.830000] ds3234 spi32766.1: Ctrl/Stat Reg: 0x00
[ 0.830000] ds3234 spi32766.1: rtc core: registered ds3234 as rtc0
[ 0.830000] ds3234 spi32766.1: hctosys: unable to read the hardware clock
rtc设备注册成功了,但是好像寄存器的值不对,也不能正常读取数据。
修改驱动
为了查找原因在spi.c文件中把
dev_dbg(&spi->dev, "setup mode%d, %s%s%s%s%u bits/w, %u Hz max --> %d\n",
(int)(spi->mode & (SPI_CPOL | SPI_CPHA)),
(spi->mode& SPI_CS_HIGH) ? "cs_high, " : "",
(spi->mode& SPI_LSB_FIRST) ? "lsb, " : "",
(spi->mode& SPI_3WIRE) ? "3wire, " : "",
(spi->mode& SPI_LOOP) ? "loopback, " : "",
spi->bits_per_word,spi->max_speed_hz,
status);
改成dev_info 查看打印信息发现
[ 0.830000] ds3234 spi32766.1: setup mode 3, 8 bits/w, 2000000 Hz max--> 0
发现mode 是3
在rtc-ds3234.c(trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_rt305x/linux-3.18.11/drivers/rtc文件夹下)驱动文件中的staticint ds3234_probe(struct spi_device *spi)函数中
有这样一句spi->mode = SPI_MODE_3;
继续看这个宏发现#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
极性和相位都置1了。在看看ds3234的极性和相位都是0
于是改为SPI_MODE_0
再重新编译烧写后,用hwhwclock –w再用hwhwclock –r发现成功了。终于完成了对ds3234的配置
- 在rt5350 openwrt系统下spi的rtc ds3234配置
- openwrt rt5350 配置笔记
- openwrt rt5350 SPI I2C驱动简单说明
- RT5350 HLK-RM04模块配置OpenWRT
- 修改rt5350 openwrt的 mac地址
- 基于openwrt RT5350的uboot波特率修改
- openwrt针对RT5350代码下载,配置和编译
- openwrt针对RT5350代码下载,配置和编译
- openwrt针对RT5350代码下载,配置和编译
- openwrt针对RT5350代码下载,配置和编译
- openwrt针对RT5350代码下载,配置和编译
- openwrt在RT5350上编译安装运行helloworld.ipk
- vocore基于rt5350最新核心板spi外设操作例子--nokia 5110 openwrt显示屏
- openwrt下VLAN的配置
- openwrt下VLAN的配置
- openwrt与rt5350
- hame RT5350移植OpenWrt
- RT5350刷openwrt全过程
- connect()函数阻塞
- 1007. 素数对猜想 (20)
- Android摄像头基础
- HDU1002 A + B Problem II
- 13. Roman to Integer leetcode Python 2016 new Season
- 在rt5350 openwrt系统下spi的rtc ds3234配置
- 从小米想到的商业模式创新
- android中xml tools详解
- struts的过滤器代码
- 欢迎使用CSDN-markdown编辑器
- Qt Creator下载和安装(详细教程)
- linux 下的phpstudy 添加 mysql 为环境变量
- 【Unity开发】UNITY实现断点续传
- ionic学习笔记1