SPI高速模式
由于在开发时用到LCD_TFT屏及W25 FLASH,使用SPI通讯时,是可以的,但是使用高速SPI时,时钟波形下降沿下不来,差不多下到一半又上去了。数据波形却正常工作。void Sys_config(void) //系统配置
{
// ******IO配置****************
WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置P1为ADC输入口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P0PU=0xFF;
P1PU=0xFF;
delay_ms(1000);
UART1_config(); //使用串口1配置
/*
//选择PLL输出时钟
#if (PLL_SEL == PLL_96M)
CLKSEL &= ~CKMS; //选择PLL的96M作为PLL的输出时钟
#elif (PLL_SEL == PLL_144M)
CLKSEL |= CKMS; //选择PLL的144M作为PLL的输出时钟
#else
CLKSEL &= ~CKMS; //默认选择PLL的96M作为PLL的输出时钟
#endif
//选择PLL输入时钟分频,保证输入时钟为12M
USBCLK &= ~PCKI_MSK;
#if (MAIN_Fosc == 12000000UL)
USBCLK |= PCKI_D1; //PLL输入时钟1分频
#elif (MAIN_Fosc == 24000000UL)
USBCLK |= PCKI_D2; //PLL输入时钟2分频
#elif (MAIN_Fosc == 48000000UL)
USBCLK |= PCKI_D4; //PLL输入时钟4分频
#elif (MAIN_Fosc == 96000000UL)
USBCLK |= PCKI_D8; //PLL输入时钟8分频
#else
USBCLK |= PCKI_D1; //默认PLL输入时钟1分频
#endif
//启动PLL
USBCLK |= ENCKM; //使能PLL倍频
delay_ms(1); //等待PLL锁频
//选择HSPWM/HSSPI时钟
#if (HSCK_SEL == HSCK_MCLK)
CLKSEL &= ~HSIOCK; //HSPWM/HSSPI选择主时钟为时钟源
#elif (HSCK_SEL == HSCK_PLL)
CLKSEL |= HSIOCK; //HSPWM/HSSPI选择PLL输出时钟为时钟源
#else
CLKSEL &= ~HSIOCK; //默认HSPWM/HSSPI选择主时钟为时钟源
#endif
*/
HSCLKDIV = 4; //HSPWM/HSSPI时钟源4分频
SSIG = 1; //忽略 SS 引脚功能,使用 MSTR 确定器件是主机还是从机
SPEN = 1; //使能 SPI 功能
DORD = 0; //先发送/接收数据的高位( MSB)
MSTR = 1; //设置主机模式
CPOL = 1; //SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
CPHA = 1; //数据在 SCLK 前时钟沿驱动,后时钟沿采样
//采用漏极开路+上拉电阻方式驱动,需要调低SPI频率才能正常与Flash通信
SPCTL = (SPCTL & ~3) | 0; //SPI 时钟频率选择, 0: 4T, 1: 8T,2: 16T,3: 2T
P_SW1 = (P_SW1 & ~(3<<2)) | (1<<0); //IO口切换. 0: P1.2/P5.4 P1.3 P1.4 P1.5, 1: P2.2 P2.3 P2.4 P2.5, 2: P5.4 P4.0 P4.1 P4.3, 3: P3.5 P3.4 P3.3 P3.2
HSCLKDIV = 0x01; //高速时钟1分频,默认2分频
//P_PM25LV040_SCK = 0; // set clock to low initial state
// P_PM25LV040_SI = 1;
LCD_SCL=0;
SPIF = 1; //清SPIF标志
WCOL = 1; //清WCOL标志
//HSSPI_CFG2 |= 0x20; //使能SPI高速模式
IO使用内部上拉电阻设置,不知会不会有问题 呢、?
作主机的话,可将SPI的CLK,MOSI,SS脚设置为推挽输出模式,提高输出脚的驱动能力。内部上拉电阻对拉低电平会有一定影响,这些输出脚不需要开启内部上拉。
页:
[1]