打印

帮我看看USART发送的数据 对吗

[复制链接]
4003|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我把USART配置成同步模式,在while中不停发送0xf8,RX出来的波形这样,请问数据对吗,
// USART1 in synchro-mode
usart_init_struct.USART_BaudRate = USART_BR;
usart_init_struct.USART_WordLength = USART_WordLength_8b;
usart_init_struct.USART_StopBits = USART_StopBits_1;
usart_init_struct.USART_Parity = USART_Parity_No;
usart_init_struct.USART_Mode = USART_Mode_Tx;
usart_init_struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_Init(USART1, &usart_init_struct);
usart_clock_init_struct.USART_Clock = USART_Clock_Enable;
   usart_clock_init_struct.USART_CPOL = USART_CPOL_Low;
   usart_clock_init_struct.USART_CPHA = USART_CPHA_1Edge;
   usart_clock_init_struct.USART_LastBit = USART_LastBit_Enable;
USART_ClockInit(USART1, &usart_clock_init_struct);

scope_0.png (50.87 KB )

黄色是数据 蓝色是时钟

黄色是数据   蓝色是时钟
沙发
selina1983|  楼主 | 2010-5-18 11:12 | 只看该作者
同志们帮帮忙啊   谢谢了

使用特权

评论回复
板凳
selina1983|  楼主 | 2010-5-18 11:14 | 只看该作者
我是想用串口同步驱动液晶

使用特权

评论回复
地板
IJK| | 2010-5-18 11:17 | 只看该作者
似乎错位了?

使用特权

评论回复
5
香水城| | 2010-5-18 11:23 | 只看该作者
怎么发送的?  为什么是在RX上出来信号?

使用特权

评论回复
6
selina1983|  楼主 | 2010-5-18 11:28 | 只看该作者
不好意思   应该是TX上的
这样发送的
void LCD_SendCommand(unsigned char uc_data)
{
        unsigned char i = 0;
        unsigned char t = 0;

        for(i=0;i<8;i++)
        {
                if(((1<<i)&uc_data))
                t|=(1<<(7-i));       
        }  

        while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
        USART_SendData(USART1, t<<1);

使用特权

评论回复
7
selina1983|  楼主 | 2010-5-18 11:28 | 只看该作者
请问这样对吗

使用特权

评论回复
8
maomao2126| | 2010-5-18 12:04 | 只看该作者
USART_SendData()函数如何定义,为什不是直接发送uc_data,而是发送处理后的t,不太理解楼主这样做的目的是什么?

使用特权

评论回复
9
香水城| | 2010-5-18 12:07 | 只看该作者
你这for循环在倒腾什么呢?你最好在调用USART_SendData之前或之后设置一个断点,看看变量t到底是什么数值。

使用特权

评论回复
10
selina1983|  楼主 | 2010-5-18 12:24 | 只看该作者
因为那个液晶的数据正好和USART发送的数据时序相反  比如我直接发0x8f  出来就是0x1f

使用特权

评论回复
11
ST_ARM| | 2010-5-18 15:14 | 只看该作者
从示波器的波形上看,你发送的数据是0xF8。不知道你发送的是什么数据。

使用特权

评论回复
12
selina1983|  楼主 | 2010-5-18 16:12 | 只看该作者
怎么看出是F8的  我发送的就是F8啊  还请指点一下啊

使用特权

评论回复
13
香水城| | 2010-5-18 16:17 | 只看该作者
你的0xF8经过for循环倒腾变成了0x1F,再经过USART_SendData(USART1, t<<1)的左移变成了0x3E,这才是信号线上看到的。

你在调用USART_SendData之前或之后设置断点,看到变量t到底是什么数值?

使用特权

评论回复
14
selina1983|  楼主 | 2010-5-18 16:34 | 只看该作者
我在调用USART_SendData之前设置断点  t=0x1F

使用特权

评论回复
15
香水城| | 2010-5-18 16:47 | 只看该作者
这就对了,13楼已经说过,信号线上出现的是0x3E,即0x1F<<1

使用特权

评论回复
16
selina1983|  楼主 | 2010-5-18 18:35 | 只看该作者
怎么看出是0x3E的   请教一下

使用特权

评论回复
17
香水城| | 2010-5-18 18:38 | 只看该作者
怎么看出是0x3E的   请教一下
selina1983 发表于 2010-5-18 18:35


看看时钟信号上升沿对应的数据电平,不就知道了?!

使用特权

评论回复
18
selina1983|  楼主 | 2010-5-18 19:04 | 只看该作者
这样看的话   不是0x7A吗   怎么是0x3E啊、

使用特权

评论回复
19
selina1983|  楼主 | 2010-5-18 20:23 | 只看该作者
难道是倒序看吗   还是不怎么理解香水城的说法

使用特权

评论回复
20
IJK| | 2010-5-18 21:01 | 只看该作者
对于串口,是低位LSb先发送

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

168

帖子

1

粉丝