测试P5.4默认会输出系统主频的 12 分频时钟 Fsys/12,
会对外电路造成干扰,是否可以关闭?谢谢
测试P5.4默认会输出系统主频的 12 分频时钟 Fsys/12,
会对外电路造成干扰,是否可以关闭?谢谢
串口UART1初始化函数 CH559UART1Init 中会置位 XBUS_AUX |= bALE_CLK_EN; 导致时钟输出,是否可以关闭,而不影响UART1?
这里串口初始化的地方不需要打开ALE输出。ALE输出只在使用外部总线的时候需要。
/*******************************************************************************
* Function Name : CH559UART1Init(UINT8 DIV,UINT8 mode,UINT8 pin)
* Description : CH559 UART1初始化设置
* Input :
UINT8 DIV设置分频系数,时钟频率=Fsys/DIV,DIV不能为0
UINT8 mode,模式选择,1:普通串口模式;0:485模式
UINT8 pin,串口引脚选择;
当mode=1时
0:RXD1=P4.0,TXD1关闭;
1:RXD1&TXD1=P4.0&P4.4;
2:RXD1&TXD1=P2.6&P2.7;
3:RXD1&TXD1&TNOW=P2.6&P2.7&P2.5;
当mode=0时
0:无意义
1:P5.4&P5.5连接485,TNOW=P4.4;
2:P5.4&P5.5连接485;
3:P5.4&P5.5连接485,TNOW=P2.5;
* Output : None
* Return : None
*******************************************************************************/
void CH559UART1Init(UINT8 DIV,UINT8 mode,UINT8 pin)
{
UINT32 x;
UINT8 x2;
SER1_LCR |= bLCR_DLAB; // DLAB位置1,写DLL、DLM和DIV寄存器
SER1_DIV = DIV; // 预分频
x = 10 * FREQ_SYS *2 / DIV / 16 / CH559UART1_BPS;
x2 = x % 10;
x /= 10;
if ( x2 >= 5 ) x ++; //四舍五入
SER1_DLM = x>>8;
SER1_DLL = x&0xff;
SER1_LCR &= ~bLCR_DLAB; //DLAB位置0,防止修改UART1波特率和时钟
if(mode == 1) //关闭RS485模式 RS485_EN = 0,不能省略
{
XBUS_AUX |= bALE_CLK_EN;
}
else if(mode == 0) //开启RS485模式 RS485_EN = 1;
{
UHUB1_CTRL |= bUH1_DISABLE;
PIN_FUNC &= ~bXBUS_CS_OE;
PIN_FUNC |= bXBUS_AL_OE;
XBUS_AUX &= ~bALE_CLK_EN;
SER1_MCR |= bMCR_HALF; //485模式只能使用半双工模式
}
...
以上是你们原厂的DEMO程序,注释中有写到“不能省略”,我测试发现如果省略UART1就异常,麻烦确认下
手册中有描述UART1的模式受 bALE_CLK_EN、bXBUS_CS_OE、bXBUS_AL_OE、bUH1_DISABLE决定。所以也可以将bUH1_DISABLE置0来使能UART1工作在非485模式
已经尝试过,当前使用的是USB 的DEVICE模式,置位bUH1_DISABLE=0不起作用,
如果设置为HOST模式,可以bUH1_DISABLE清0,但是发现切回DEVICE模式后,该位又被置1
USB_CTRL寄存器中的bUC_HOST_MODE位控制的USB主从机模式会直接影响bUH1_DISABLE的状态,作为USB设备模式的时bUH1_DISABLE恒为1.
XBUS_AUX |= bALE_CLK_EN; 这句话注释掉,UART1通信不正常,而bUH1_DISABLE只能设置为1,最终的解决方法呢?如何关闭CLK输出
根据RS485EN = 0这一条件,还可以将bXBUS_CS_OE置1,但是会导致P34被配置成XBUS的XCSO输出,P55一直输出XBUS的地址线波形。
总结:UART1工作在普通TTL模式的3种配置方式:
1、不使用USB设备模式,将bUH1_DISABLE置0
2、bALE_CLK_EN置1,P54一直输出1/12的系统时钟
3、bXBUS_CS_OE置1,P34和P55处于被XBUS外设占用状态
只能从3种条件中选一个用了。