CH559L 如何關(guān)閉P5.4腳時(shí)鐘輸出

測(cè)試P5.4默認(rèn)會(huì)輸出系統(tǒng)主頻的 12 分頻時(shí)鐘 Fsys/12,

會(huì)對(duì)外電路造成干擾,是否可以關(guān)閉?謝謝? ??




串口UART1初始化函數(shù) CH559UART1Init 中會(huì)置位 XBUS_AUX |= ?bALE_CLK_EN; 導(dǎo)致時(shí)鐘輸出,是否可以關(guān)閉,而不影響UART1?


這里串口初始化的地方不需要打開(kāi)ALE輸出。ALE輸出只在使用外部總線(xiàn)的時(shí)候需要。


/*******************************************************************************

* Function Name? : CH559UART1Init(UINT8 DIV,UINT8 mode,UINT8 pin)

* Description? ? : CH559 UART1初始化設(shè)置

* Input? ? ? ? ? :?

? ? ? ? ? ? ? ? ? ?UINT8 DIV設(shè)置分頻系數(shù),時(shí)鐘頻率=Fsys/DIV,DIV不能為0

? ? ? ? ? ? ? ? ? ?UINT8 mode,模式選擇,1:普通串口模式;0:485模式

? ? ? ? ? ? ? ? ? ?UINT8 pin,串口引腳選擇;

? ? ? ? ? ? ? ? ? ?當(dāng)mode=1時(shí)

? ? ? ? ? ? ? ? ? ?0:RXD1=P4.0,TXD1關(guān)閉;

? ? ? ? ? ? ? ? ? ?1:RXD1&TXD1=P4.0&P4.4;

? ? ? ? ? ? ? ? ? ?2:RXD1&TXD1=P2.6&P2.7;

? ? ? ? ? ? ? ? ? ?3:RXD1&TXD1&TNOW=P2.6&P2.7&P2.5;

? ? ? ? ? ? ? ? ? ?當(dāng)mode=0時(shí)

? ? ? ? ? ? ? ? ? ?0:無(wú)意義

? ? ? ? ? ? ? ? ? ?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,寫(xiě)DLL、DLM和DIV寄存器

? ? SER1_DIV = DIV;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 預(yù)分頻

? ? 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波特率和時(shí)鐘

? ? if(mode == 1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//關(guān)閉RS485模式 RS485_EN = 0,不能省略

? ? {

? ? ? XBUS_AUX |=? bALE_CLK_EN;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? }

? ? else if(mode == 0)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //開(kāi)啟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模式只能使用半雙工模式? ??

? ? }

...


以上是你們?cè)瓘S(chǎng)的DEMO程序,注釋中有寫(xiě)到“不能省略”,我測(cè)試發(fā)現(xiàn)如果省略UART1就異常,麻煩確認(rèn)下


手冊(cè)中有描述UART1的模式受?bALE_CLK_EN、bXBUS_CS_OE、bXBUS_AL_OE、bUH1_DISABLE決定。所以也可以將bUH1_DISABLE置0來(lái)使能UART1工作在非485模式

image.png


已經(jīng)嘗試過(guò),當(dāng)前使用的是USB 的DEVICE模式,置位bUH1_DISABLE=0不起作用,

如果設(shè)置為HOST模式,可以bUH1_DISABLE清0,但是發(fā)現(xiàn)切回DEVICE模式后,該位又被置1


USB_CTRL寄存器中的bUC_HOST_MODE位控制的USB主從機(jī)模式會(huì)直接影響bUH1_DISABLE的狀態(tài),作為USB設(shè)備模式的時(shí)bUH1_DISABLE恒為1.


XBUS_AUX |=? bALE_CLK_EN;? ? ? ?這句話(huà)注釋掉,UART1通信不正常,而bUH1_DISABLE只能設(shè)置為1,最終的解決方法呢?如何關(guān)閉CLK輸出


根據(jù)RS485EN = 0這一條件,還可以將bXBUS_CS_OE置1,但是會(huì)導(dǎo)致P34被配置成XBUS的XCSO輸出,P55一直輸出XBUS的地址線(xiàn)波形。

總結(jié):UART1工作在普通TTL模式的3種配置方式:

1、不使用USB設(shè)備模式,將bUH1_DISABLE置0

2、bALE_CLK_EN置1,P54一直輸出1/12的系統(tǒng)時(shí)鐘

3、bXBUS_CS_OE置1,P34和P55處于被XBUS外設(shè)占用狀態(tài)


只能從3種條件中選一個(gè)用了。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频