看了杰发科技AC7811x的SPI外设例程,我认为使用SPI外设只需要初始化SPI,然后调用SPI函数就可以了。但我设置以后通过示波器查看并没有得到我想要的结果(由于硬件对SPI2接口上拉,我示波器显示的波形一直是高电平)并没有发送0,1,2,3,4,5,6,7,恳请各位大佬指点一下!代码如下:
#define length (8)
uint16_t SendBuffer[length] = {0,1,2,3,4,5,6,7}
uint16_t ReceiveBuffer[length] = {0}
void SPI2_INIT(void)
{
SPI_ConfigType spiConfig = {0};
/*复用引脚功能*/
GPIO_SetFunc(SPI2_CS_PIN, GPIO_FUNC_1);
GPIO_SetFunc(SPI2_SCK_PIN, GPIO_FUNC_1);
GPIO_SetFunc(SPI2_MISO_PIN, GPIO_FUNC_1);
GPIO_SetFunc(SPI2_MOSI_PIN, GPIO_FUNC_1);
/*初始化SPI模块*/
spiConfig.setting.master = ENABLE;//主机模式
spiConfig.setting.intEn = DISABLE;//禁用中断
spiConfig.setting.spiEn = ENABLE;//Spi使能
spiConfig.setting.txMsbFirst = ENABLE;//主机MSB先行
spiConfig.setting.rxMsbFirst = ENABLE;//从机MSB先行
spiConfig.setting.csOutputEn = ENABLE;//使能SPI模块控制CS
spiConfig.setting.continuousCSEn = ENABLE;
spiConfig.setting.frmSize = 7;
spiConfig.setting.cpha = 1;//在第二个边沿锁定数据
spiConfig.setting.cpol = 1;//空闲时为高电平
spiConfig.sckHigh = 23;//波特率: Fscl = Fbclk / ((SCK_LOW + 1) + (SCK_HIGH + 1)).
spiConfig.sckLow = 23;//配置波特率为4M.
//初始化SPI
SPI_Initialize(SPI2, &spiConfig);
}
int main()
{
SPI2_INIT();
SPI_TransferPoll(SPI2,SendBuffer,ReceiveBuffer,length);
while(1)
{
}
}
关于下面这个语句我的理解是:在发送数据MCU会自动下拉片选引脚不用收到添加代码实现片选引脚下拉,不知道理解的对不对请各位谈一下。
spiConfig.setting.csOutputEn = ENABLE;//使能SPI模块控制CS
我的代码还需要添加一些什么代码才能发送数据呢?请各位大佬指正?
感谢感谢
|