各位大侠, 本人在调试dm8127 的 RDK 3.5 平台 IPNC 系统, 原来 sensor是 mt9j003, 使用 i2c 通讯, 现在换成了 ad9923a , 变成 spi 通讯,
我在 kernel 中成功实现了 spi 与 ad9923a 的通讯, 但是在 iss 中无法调用上层 的 kernel 接口, 也无法 调用 类似 " echo xxx > yyy " 等系统命令, 所以我想只能在 iss 中实现 spi 功能, 不知道哪位大侠能指点两招给小弟, 谢谢!
Robin Edson:
ISS中SPI是通过GPIO模拟得到的,可以参考IMX136中spi的实现。
zhanfei huang:
回复 Robin Edson:
不会那么落后吧, 有现成的 SPI 控制, 还另外用GPIO模拟?
我觉得 正确使用 SPI 寄存器, 利用硬件控制完成 SPI 功能才是正确的做法….
Robin Edson:
回复 zhanfei huang:
M3核无法访问SPI控制器的寄存器。
zhanfei huang:
回复 Robin Edson:
刚才验证了一下, 确实M3无法访问 SPI 寄存器, 只能访问 I2c 寄存器………. 访问 地址超过 0x4803 0000 代码会 停止运行…..
我想另外的办法是 M3 能不能往上面 APP 层发消息, 让 APP 层 调用 linux 命令, (如 " echo " ) ?
上层是可以 poll 的方式 获取 M3 层数据的, 但是让 M3 层主动发消息会更好些.
我是不想在M3层把 SPI 配置成 GPIO, 否则 linux 层又不能使用 SPI 了.
zhanfei huang:
回复 zhanfei huang:
实在没办法, 只好用GPIO 模拟 SPI 了, 现在已经弄好了, 数据波型弄得跟 SPI 控制器的波型一样, 通讯也正常…
PS: 在M3在调试这个 GPIO SPI 不方便, 可以先在内核中调, 成功后再移到 M3中, 地址一样的, 只是内核使用 omap_writel, M3直接 是 REG32 这个宏…
Robin Edson:
回复 zhanfei huang:
图方便的话就直接拿IMX136下GPIO模拟SPI的代码来用,稍稍改东西就行。
zhanfei huang:
回复 Robin Edson:
IMX136 在哪里, 我没有