请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: MSPM0L1228-Q1
在文件 SPIMSPM0.c 中、initHw () 函数中有以下代码:
if (hwAttrs->csnPin && ((format & SPI_CTL0_FRF_MASK) == SPI_CTL0_FRF_MOTOROLA_3WIRE))
{
/*
* A CS pin was specified, upgrade the 3WIRE to a 4WIRE mode
*/
format |= SPI_CTL0_FRF_MOTOROLA_4WIRE;
}
然而、CSnPin==0 是有效引脚。 如果您将其设置为 0、其他地方的代码将配置引脚 0。 但是、如果您将 CSnPin 设置为 GPIO_INVALID_INDEX、则这将有用(没有)地将格式设置为 4 线。
我认为第一行应该是:
if (hwAttrs->csnPin != GPIO_INVALID_INDEX && ((format & SPI_CTL0_FRF_MASK) == SPI_CTL0_FRF_MOTOROLA_3WIRE))
或者实际上、整个检查应该消失。 让用户设置所需的值。
但是、在整个文件中、对 3 线的处理似乎考虑不充分。 上面是有效的、但它实际上应该使用格式来知道是否正在使用 CS、如果是这种情况、则忽略所有 CS 操作。