OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2754|回复: 2

STM32F103+OV7725+串口发送数据PC显示(改)

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-10-13
在线时间
4 小时
发表于 2018-11-5 13:37:39 | 显示全部楼层 |阅读模式
32板子驱动OV7725是成功的,用串口将数据传送到PC端,用Python写的串口读取一帧的代码并显示该帧,即显示一张图片,不知为什么显示的老是错误的,下面部分代码,求各路大神指点错误,在下我不胜感激。读出来的图片也是全花的
Python代码:
import serial
from time import sleep
from PIL import Image

def parsergb565(byte1):
    byte12 = int.from_bytes(byte1, byteorder='big', signed=False)
    red =byte12 >> 11
    green = (byte12 >> 5) & 0x3f
    blue = byte12 & 0x1f
    red *= 8
    green *= 4
    blue *= 8

    return (red, green, blue)

def recv(serial):
    data = serial.read(4)
    '''while True:
        data = serial.read(2)
        if data == '':
            continue
        else:
            break'''
#sleep(0.02)
return data

def read():
    serial.write('1'.encode())
    i=0
    for x in range(0, 240):
        for y in range(0, 320):
            data = recv(serial)
            print(data)
            i = i+1
            print(i)
            color = parsergb565(data)
            image.putpixel((x,y),color)
    print("finsh")
    image.show()
    image.save("00.jpg")


if __name__ == '__main__':
    image_width = 240
    image_height = 320
    serial = serial.Serial(
        port='COM6',
        baudrate=115200,
        parity=serial.PARITY_NONE,#奇偶校验位
stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=0.000000001)
    if serial.isOpen() :
        print("open success")
    else :
        print("open failed")

    image = Image.new("RGB",(240,320))
    read()


[color=rgb(0, 0, 0) !important]STM32F103部分代码
if(ov_sta)//有帧中断更新
{
        LCD_Scan_Dir(U2D_L2R);                //从上到下,从左到右
        LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT);//将显示区域设置到屏幕中央
        if(lcddev.id==0X1963)
                LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_HEIGHT,OV7725_WINDOW_WIDTH);//将显示区域设置到屏幕中央
        LCD_WriteRAM_Prepare();     //开始写入GRAM       
        OV7725_RRST=0;                                //开始复位读指针
        OV7725_RCK_L;
        OV7725_RCK_H;
        OV7725_RCK_L;
        OV7725_RRST=1;                                //复位读指针结束
        OV7725_RCK_H;
        for(i=0;i<OV7725_WINDOW_HEIGHT;i++)
        {
                for(j=0;j<OV7725_WINDOW_WIDTH;j++)
                {
                        OV7725_RCK_L;
                        color=GPIOC->IDR&0XFF;        //读数据
                        OV7725_RCK_H;
                        color<<=8;  
                        OV7725_RCK_L;
                        c=GPIOC->IDR&0XFF;        //读数据
                        color = color|c;
                        OV7725_RCK_H;
                        printf("%X",color);
                        LCD->LCD_RAM=color;  
                }
        }
        ov_sta=0;                                        //清零帧中断标记
        ov_frame++;
        LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向
}

ov7725+32.zip

4.53 MB, 下载次数: 118

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-10-13
在线时间
4 小时
 楼主| 发表于 2018-11-5 13:39:00 | 显示全部楼层
问了正点原子的客服,也没解决,请各路大神帮帮忙,谢谢
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-11-5 13:39:10 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表