主题中讨论的其他器件:C2000WARE、 SysConfig
尊敬的团队:
我的一位客户希望将 SPIB 配置为 SPI 通信端口、但他遇到了以寄存器形式配置的 GPIO 问题、因为以库函数形式配置的 GPIO 可以正常通信。 您能否检查以下配置是否存在任何问题?
//说明 F280049 SPIB 配置说明
// SIMO---GPIO56 SOMI---GPIO25 CLK---GPIO26 SET----GPIO27
//
void InitSoib(void)
{
EALLOW;
//初始化引脚
SpibinitPin();
//使能SPI-B时钟
CpuSysRegs.PCLKCR8.bit.SPI_B = 1;
//SPI复位设置
SpibRegs.***.bit.SPISWRESET = =0;
DELAY_US(10);
//设置收发模式
SpibRegs.***.bit.CLKPOLARITY = 0;
SpibRegs.***.bit.CLK_PHASE = 1;
//设置收数据位数
SpibRegs.***.bit.*** = (8 - 1);
//溢出中断禁止信号延时半周期使能,主动模式,使能发送,禁止SPI中断
SpibRegs.***.bit.OVERRUNINTENA = 0;//溢出中断禁止
SpibRegs.***.bit.MASTER_SLAVE = 1; //主动模式
SpibRegs.***.bit.TALK = 1;//使能发送
SpibRegs.***.bit.SPIINTENA = 0;//禁止SPI中断
//设置波特率
SpibRegs.SPIBRR.bit.SPI_BIT_RATE = ((100E6 / 4) / 500E3) - 1;
//SPI自由运行状态
SpibRegs.SPIPRI.all = 0x10;
//接受溢出使能。默认值1111
SpibRegs.SPIFFCT.all = 0x204F;
//无延时
SpibRegs.SPIFFCT.all = 0x0;
//完成复位
SpibRegs.***.bit.SPISWRESET = 1;
EDIS;
}
//GPIO配置
void SpibinitPin(void)
{
//SPISIMO
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1;//设置为SPI模式
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // 输出
GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; // 使能上拉电阻
//SPISOMI
GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 1;//设置为SPI模式
GpioCtrlRegs.GPADIR.bit.GPIO25 = 0; // 输入
GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 3; // 异步输入
GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; // 使能上拉电阻
//CLK
GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 1;//设置为SPI模式
GpioCtrlRegs.GPADIR.bit.GPIO26 = 1; // 输出
GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0; // 使能上拉电阻
//使能
GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 1;//设置为SPI模式
GpioCtrlRegs.GPADIR.bit.GPIO27 = 1; // 输出
GpioCtrlRegs.GPAPUD.bit.GPIO27 = 0; // 使能上拉电阻
}
此致