linux内核驱动spi-mt7621.c里mt7621_spi_set_cs()函数的实现讨论

本文解析了spi_mt7621.c中mt7621_spi_set_cs函数的工作原理,该函数通过设置MT7621_SPI_POLAR来改变片选信号的有效电平状态,实现对特定SPI设备的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spi_mt7621.c的函数mt7621_spi_set_cs的实现很奇怪,此函数的功能是设置片选信号,但实际上是设置MT7621_SPI_POLAR的内容,查手册,MT7621_SPI_POLAR的功能是定义片选信号是低有效还是高有效。所以,表面上看,似乎实现的功能不大对。但实际上是对的,原因如下:

首先,CS都应该是低电平有效的。初始化时,SPI_MASTER寄存器的rs_slave_sel被设置为7:

    master |= 7 << 29;

那就意味着,CS0到CS6都没有被选中,这样,SPI master控制器将CS0和CS1都设置为高(缺省为低电平有效)。然后,需要选中CS1有两种方法:1,设置rs_slave_sel为1。2,设置MT7621_SPI_POLAR,将CS1变为高电平有效。这样,因为rs_slave_sel被设置为7,意味着CS1没有被选中,由于CS1是高电平有效,SPI master控制器就将CS1变为低电平,而这正好“选中”了CS1。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值