完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
串口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种条件中选一个用了。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
347 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
861 浏览 0 评论
1461 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3417 浏览 2 评论
2822 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1808浏览 1评论
1461浏览 1评论
348浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
863浏览 0评论
468浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:39 , Processed in 0.881151 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
624