求助大神关于 STM32与DGUS屏通信问题

2019-07-21 06:37发布

STM32能给屏传输数据,而屏发出的指令32收不到   用电脑串口调试的时候   能接收到屏发的指令,用电脑或另一个32 通过串口发送同样的指令32也能收到,波特率设置也对,实在是不知从何下手了    请各位大神指点迷津
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-07-21 11:45
CXY1996 发表于 2018-12-19 18:18
用示波器看了   屏没有与32连接时  示波器有波形   当屏与32连接时   就是高阻态   而且屏与51连接的时候 ...

高组态就横竖不对了。。。找问题
正点原子
2楼-- · 2019-07-21 13:18
是不是串口电平匹配的问题? 串了电阻?
CXY1996
3楼-- · 2019-07-21 17:08
 精彩回答 2  元偷偷看……
oyixi001
4楼-- · 2019-07-21 21:23
void USART3_IRQHandler(void)                        //串口3中断服务程序,用于和触摸屏通讯。
{
    uint8_t Res;
    static uint8_t US_STA = 0;         //用于检测是否已经收到帧头,未收到为0,收到A8为1,收到8A未2。
    static uint8_t buffer_num = 0;
    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
    {
        Res = USART_ReceiveData(USART3);               //读取接收到的数据
        if(!USART3_RX_STA)
        {
            if(US_STA == 0)
            {
                if(Res == 0xA8) US_STA = 1;         //接收到了0xA8,US_STA=1
            }
            else if(US_STA == 1)
            {
                if(Res == 0x8A)
                {
                    US_STA = 2;                     //接收到了0x8A,US_STA=2
                    buffer_num = 0;
                }
                else US_STA = 0;                    //A8后面不是8A则全部重新接收。
            }
            else if(US_STA == 2)
            {
                USART3_RX_Buffer[buffer_num] = Res;
                if(buffer_num++ == USART3_RX_Buffer[0])
                {
                    buffer_num = 0;
                    USART3_RX_STA = 1;              //当接收数量等于缓存0位置时,则接收完成。
                    US_STA = 0;
                }
            }
        }
    }
}

用这个中断函数收就行了,A8  8A是我迪文屏的2位帧头,根据你自己设置的改一下就好。
另外你说电脑能收到屏的数据,那就是232电平喽。你接单片机有没有转3.3V TTL?
正点原子
5楼-- · 2019-07-22 01:43
CXY1996 发表于 2018-12-14 11:01
没串电阻啊    两者直接线连的

示波器看看波形
CXY1996
6楼-- · 2019-07-22 02:32
正点原子 发表于 2018-12-15 02:48
示波器看看波形

用示波器看了   屏没有与32连接时  示波器有波形   当屏与32连接时   就是高阻态   而且屏与51连接的时候   示波器也是有波形的

一周热门 更多>