news 2026/11/1 1:44:45

第五周工作纪要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第五周工作纪要

工作内容:

通过测试EKT-YMCC8405AAAVUCL-HT16C23(I2C)、YMMO0216AAAAUGN-ST7567(ISP,8080)、YMC128128-96AAAFDGL(UART)、YMC9284-01AAANUGN(4SPI)各类产品,排查问题,深究不同传输方式EKT-YMCC8405AAAVUCL展盒制作和工艺制作流程。

本周09/18加班修改EKT-YMCC8405AAAVUCL-HT16C23(I2C)展盒文件

感悟:

一方面锻炼硬件技术:让排查硬件链接、断短、供电、电流功率和设计电路板的阻值排线引脚等。

另一方面深耕软件技术:了解探究最底层的连接方式,时序图,对于IC资料来规定初始化进行软件编排✍️,习惯性的理解不同产品的特殊性,对于IC选型的考究。

心得:在派发任务,发现问题时,先考虑是知识点还是技术性问题,还是人员安排,尽可能不影响时间调度,提前做时间规划给领导及时汇报,以免耽误进程,两头催。

每一周做一份工作汇报,为下周工作做规划,排好进度,同时,回顾这周所做,把知识点问题跟进解决现有漏洞,尽可能让技术性问题形成经验之谈。

YMC12864-447AAAFUGL 4spi

/****************************************************** write_com(uchar) write_dat(uchar) *******************************************************/ //serial 4-SPIÐ void write_com(unsigned char byte) { unsigned char i; cd=0; for(i=0;i&lt;8;i++) { sck=0; _nop_(); _nop_(); sda=(bit)(byte&amp;0x80); byte=byte&lt;&lt;1; sck=1; _nop_(); _nop_(); } } //serial 4-SPIÐ void write_dat(unsigned char byte) { unsigned char i; cd=1; for(i=0;i<8;i++) { sck=0; nop(); nop(); sda=(bit)(byte&0x80); sck=1; byte=byte<<1; nop(); nop(); } }

EKT-YMCC8405AAAVUCL i2c

#include <Reg52.h> #include <intrins.h> bit ack; void Start_I2c(); void start_i2c() { sda=1; nop(); sck=1; nop(); nop(); nop(); nop(); nop(); sda=0; nop(); nop(); nop(); nop(); nop(); sck=0; nop(); nop(); } void Stop_I2c(); void stop_i2c() { sda=0; nop(); sck=1; nop(); nop(); nop(); nop(); nop(); sda=1; nop(); nop(); nop(); nop(); } void SendByte(unsigned char c); void sendbyte(unsigned char c) { unsigned char BitCnt; for(BitCnt=0;BitCnt<8;BitCnt++) { if((c<<BitCnt)&0x80)sda=1; else sda=0; nop(); sck=1; nop(); nop(); nop(); nop(); nop(); sck=0; } _nop_(); _nop_(); sda=1; _nop_(); _nop_(); sck=1; _nop_(); _nop_(); _nop_(); if(sda==1)ack=0; else ack=1; sck=0; _nop_(); _nop_(); } unsigned char RcvByte(); unsigned char RcvByte() { unsigned char retc; unsigned char BitCnt; retc=0; sda=1; for(BitCnt=0;BitCnt<8;BitCnt++) { nop(); sck=0; nop(); nop(); nop(); nop(); nop(); sck=1; nop(); nop(); retc=retc<<1; if(sda==1)retc=retc+1; nop(); nop(); } sck=0; nop(); nop(); return(retc); } void Ack_I2c(bit a); void Ack_I2c(bit a) { if(a==0)sda=0; else sda=1; nop(); nop(); nop(); sck=1; nop(); nop(); nop(); nop(); nop(); sck=0; nop(); nop(); } bit ISendByte(unsigned char sla,ucahr c); bit ISendByte(unsigned char sla,unsigned char c) { Start_I2c(); SendByte(sla); if(ack==0)return(0); SendByte(c); if(ack==0)return(0); Stop_I2c(); return(1); } bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no); bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) { unsigned char i; Start_I2c(); SendByte(sla); if(ack==0)return(0); SendByte(suba); if(ack==0)return(0); for(i=0;i<no;i++) { SendByte(*s); if(ack==0)return(0); s++; } Stop_I2c(); return(1); } bit IRcvByte(unsigned char sla,ucahr *c); bit IRcvByte(unsigned char sla,unsigned char *c) { Start_I2c(); SendByte(sla+1); if(ack==0)return(0); *c=RcvByte(); Ack_I2c(1); Stop_I2c(); return(1); } bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no); bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) { unsigned char i; Start_I2c(); SendByte(sla); if(ack==0)return(0); SendByte(suba); if(ack==0)return(0); Start_I2c(); SendByte(sla+1); if(ack==0)return(0); for(i=0;i<no-1;i++) { *s=RcvByte(); Ack_I2c(0); s++; } *s=RcvByte(); Ack_I2c(1); Stop_I2c(); return(1); }

YMC128128-96AAAFDGL软件uart串口中断

void int0_int(void) interrupt 0 { if(pause_en) { pause_en=0; pause=(pause?0:1); TH2=RCAP2H; TL2=RCAP2L; timer2_int_times=0; TR2=1; } } void t0_int(void) interrupt 1 { delay=0; TR0=0; } void t2_int(void) interrupt 5 { if(EXF2)EXF2=0; if(TF2) { TF2=0; timer2_int_times++; if(timer2_int_times==6)//300ms { timer2_int_times=0; TR2=0; pause_en=1; } } } void uart_int(void) interrupt 4 { if(RI)uart_rx(); if(TI)uart_tx(); } void uart_rx(void) { RI=0; m=SBUF; rx[rx_n++]=m; if(rx_n==rx_max){rok=1;rx_n=0;} } void uart_tx(void) { TI=0; tok=1; } void mcu_initial(void) { rok=0; rx_n=0; rx_max=1; tok=1; tx_n=0; tx_max=0; P0=0xff; P1=0xff; P2=0xff; P3=0xff; //T0-timer ,T1-Baud Generator TMOD=0x21;//T1 Timer-8bit auto reload ,T0 Timer-16 bit SCON=0x70;//mode-1 [8bit ,strict stop-bit ,enable Rx-work] PCON&=0x3F;// //TH1=253;//BAUD=11.0592M/12/32/3=9600 (At 12T) TH1=243;//BAUD=12M/12/32/13=2403 (At 12T) TR1=1; T2CON=0x00; T2MOD=0x00; RCAP2L=(65536-50000)%256; RCAP2H=(65536-50000)/256; EA=1; ES=1; ET0=1; ET2=1; IT0=1; EX0=1; AUXR=0x01; }

YMMO0216AAAAUGN-ST7567 8080

sfr ISP_CONTR = 0xe7; void isp_delay( unsigned int i ) using 1 { while( i-- > 0); } void isp_init(void) { delay_10us(); delay_100us(); delay_us(0); delay_ms(0); delay_ss(0); IP = 0x10; IE = 0x90; TMOD = 0x20; TL1 = 0xfd; TH1 = 0xfd; SCON = 0xd8; PCON = 0x00; TR1 = 1; EA=1; } void isp_seria() interrupt 4 using 1{ EA=0;RI=0;TR1=0; isp_delay(50000); isp_delay(50000); ISP_CONTR = 0x60; }

ISP传输

/****************************************************** write_com(uchar) write_com2(uchar,uchar) write_dat(uchar) *******************************************************/ void write_com(unsigned char byte) { // unsigned char i; rs=0; wr=1; // db=0xff; // do // { // // rd=0; // i=db; // rd=1; // }while(i&0x80); db=byte; wr=0; wr=1; } //void write_com2(unsigned char byte1,unsigned char byte2) //{ //// unsigned char i; // rs=0; // wr=1; //// db=0xff; //// do //// { //// //// rd=0; //// i=db; //// rd=1; //// }while(i&0x80); // // db=byte1; // wr=0; // wr=1; // // db=byte2; // wr=0; // wr=1; //} void write_dat(unsigned char byte) { // unsigned char i; rs=0; wr=1; // db=0xff; // do // { // rd=0; // i=db; // rd=1; // }while(i&0x80); rs=1; db=byte; wr=0; wr=1; }

对比表

名称类型线数同步/异步双工拓扑速度典型用途
SPI通信接口4+同步全双工一主多从,片选高Flash、传感器、LCD
4线SPISPI接线方式4同步通常全双工,LCD单向一主多从高LCD、Flash
I2C通信接口2同步半双工多主多从,地址寻址中低传感器、EEPROM
UART通信接口2异步全双工点对点中低调试、模块通信
UART串口中断处理方式-----UART中断收发
8080并行接口8/16+控制同步通常单向写点对点高LCD并口屏
ISP下载方式2~4+取决于接口---单片机烧录

ISP

ISP = In-System Programming,在系统编程。

意思是:不用把芯片拆下来,直接在主板上通过某些接口给单片机下载程序。

常见 ISP 接口:

  • SPI ISP

  • UART ISP

  • JTAG

  • SWD

ISP 是下载/烧录方式,不是通信协议。

8080

It usually refers to the8080 parallel interface, also known as the MCU interface, commonly used in LCD screens.

通常指8080 并口,也叫 MCU 接口,常见于 LCD 屏幕。

它模仿 Intel 8080 总线时序,线比较多:

It mimics the Intel 8080 bus timing and uses quite a few lines:

  • D0~D7orD0~D15:data linesD0~D7或D0~D15:数据线

  • CS:chip selectCS:片选

  • WR:writeWR:写

  • RD:readRD:读

  • DC:command/dataDC:命令/数据

  • RST:resetRST:复位

Features:

  • Parallel transmission, fast speed 并行传输,速度快

  • Many lines, takes up a lot of I/O 线多,占 IO 多

  • Often used for MCU to directly drive TFT LCD 常用于单片机直接驱动 TFT LCD

  • Compared with SPI screens, it refreshes faster but requires more wiring 和 SPI 屏相比,刷屏更快,但接线更多

There is also the6800 parallel interface, which follows Motorola 6800 timing and is similar to 8080 but with different control lines.

另外还有6800 并口,是 Motorola 6800 时序,和 8080 类似但控制线不同。

UART

异步串行、全双工、点对点通信。

两根线:

  • TX:发送

  • RX:接收

注意:两个设备要交叉连接:

text

A.TX -> B.RX A.RX -> B.TX

特点:

  • 没有时钟线,靠双方约定波特率

  • 点对点,不适合一条总线挂很多设备

  • 常用于调试串口、GPS、蓝牙、WiFi、4G 模块

  • 常见波特率:9600、115200 等


UART串口中断

这不是一种接口,而是 UART 的软件处理方式。

UART 收发数据时,有两种方式:

  1. 轮询:主程序不停查标志位,看有没有收到数据。

  2. 中断:收到数据或发送完成时,硬件触发中断,CPU 跳去执行中断函数。

比如 8051 里:

c

void uart_int(void) interrupt 4 { if(RI) uart_rx(); if(TI) uart_tx(); }
  • RI:接收中断标志

  • TI:发送中断标志

好处:不阻塞主程序,实时性更好。
所以“UART串口中断”= 用中断方式处理 UART 收发,不是和 SPI、I2C 并列的硬件接口。

I2C

同步串行、半双工、两线制总线。

两根线:

  • SCL:时钟

  • SDA:数据

特点:

  • 一根总线上可以挂很多设备

  • 每个设备有唯一地址

  • 速度较慢:100kHz、400kHz、1MHz 等

  • 常用于传感器、EEPROM、小 OLED、RTC

优点:线少,多设备方便。
缺点:速度不如 SPI,总线容易被拉死。

SPI 本身最常见就是 4 线:

text

SCLK, MOSI, MISO, CS

但用在LCD/OLED 屏上时,经常说的“4线SPI”是:

text

SCLK, MOSI, CS, DC

其中:

  • DC:数据/命令选择

  • 没有MISO,因为屏幕通常只收不发

“4线SPI”不是另一种协议,而是SPI 的一种接线/使用方式。

“4线ISP”,那它通常指用 4 根线给单片机下载程序,比如:

text

SCK, MOSI, MISO, RESET

这是下载方式,不是通信协议。

SPI

同步串行通信接口,全双工,主从结构。

常见 4 根线:

  • SCLK:时钟

  • MOSI:主机发,从机收

  • MISO:从机发,主机收

  • CS/SS:片选

特点:

  • 速度快,常见几 MHz 到几十 MHz

  • 一主多从,每个从机一个片选

  • 没有地址概念,靠片选选设备

  • 常用于 Flash、SD 卡、传感器、LCD 屏

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/1 1:44:10

开源字体思源黑体:3步搞定选型、安装与跨平台适配

开源字体思源黑体&#xff1a;3步搞定选型、安装与跨平台适配 【免费下载链接】source-han-sans Source Han Sans | 思源黑体 | 思源黑體 | 思源黑體 香港 | 源ノ角ゴシック | 본고딕 项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans 上个月重构一个多语言…

作者头像 李华
网站建设 2026/11/1 1:43:14

ContextMenuManager:右键菜单管理实操指南

ContextMenuManager&#xff1a;右键菜单管理实操指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager ContextMenuManager 是一款免费的 Windows 右键菜单管理工…

作者头像 李华
网站建设 2026/11/1 1:38:55

Windows 家庭版怎么开多用户远程桌面?RDP Wrapper 完整上手指南

Windows 家庭版怎么开多用户远程桌面&#xff1f;RDP Wrapper 完整上手指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap RDP Wrapper 是一个开源项目&#xff0c;目标是在 Windows 家庭版、Basic 版这类"阉…

作者头像 李华
网站建设 2026/11/1 1:33:10

LinkSwift 网盘直链下载助手:3 分钟把 9 大网盘的真实直链送进 IDM

LinkSwift 网盘直链下载助手&#xff1a;3 分钟把 9 大网盘的真实直链送进 IDM 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动…

作者头像 李华
网站建设 2026/11/1 1:32:12

电机学:交流旋转电机的定子分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华