您尚未登录。

#2 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » OV7670测试输出的彩条显示有问题 » 昨天 16:24:04

与非门
回复: 0


为什么是偏的呢?用的是rp2040+ov7670(无fifo)+st7789(320*240)
<code>
void set_ov7670reg_7(void)
{
//Frame Rate Adjustment for 24Mhz input clock
//wrOV7670Reg(0x12, 0x80); // 软件复位
wrOV7670Reg(0x11, 0x80); // 30fps PCLK=24MHz (软件应用手册上设置的是0x80,例程设置的是0x00)
wrOV7670Reg(0x6b, 0x0a); // PLL控制 (软件应用手册上设置的是0x0a,例程设置的是0x40,将PLL调高的话就会产生花屏)//0x0a
wrOV7670Reg(0x2a, 0x00);
wrOV7670Reg(0x2b, 0x00);
wrOV7670Reg(0x92, 0x00);
wrOV7670Reg(0x93, 0x00);
wrOV7670Reg(0x3b, 0x0a);

//Output format
wrOV7670Reg(0x3a, 0x04);
wrOV7670Reg(0x40, 0xd0);
wrOV7670Reg(0x12, 0x16); // QVGA(320*240)、RGB 14
//wrOV7670Reg(0x12, 0x00); // VGA(640*480)、RGB

//RGB555/565 option(must set COM7[2] = 1 and COM7[0] = 0)
//wrOV7670Reg(0x40, 0x10); // RGB565,effective only when RGB444[1] is low
// 0b11010000 11: Output range: [00] to [FF], 01: RGB 565, effective only when RGB444[1] is low
wrOV7670Reg(0x8c, 0x00);

//Special effects - 特效 (normal)
// 0x04
wrOV7670Reg(0x67, 0x80);
wrOV7670Reg(0x68, 0x80);

//Mirror/VFlip Enable - 水平镜像/竖直翻转使能
wrOV7670Reg(0x1e, 0x01); // 修改配置值将产生图像显示上下或左右颠倒 //0x37

//Banding Filter Setting for 24Mhz Input Clock - 条纹滤波器 (30fps for 60Hz light frequency)
wrOV7670Reg(0x13, 0xe7); // banding filer enable
wrOV7670Reg(0x9d, 0x98); // 50Hz banding filer
wrOV7670Reg(0x9e, 0x7f); // 60Hz banding filer
wrOV7670Reg(0xa5, 0x02); // 3 step for 50Hz
wrOV7670Reg(0xab, 0x03); // 4 step for 60Hz
wrOV7670Reg(0x3b, 0x02); // select 60Hz banding filer
wrOV7670Reg(0x01,0xff);
wrOV7670Reg(0x02,0xff);
wrOV7670Reg(0x09,0x03);
// // //Simple White Balance - 白平衡
wrOV7670Reg(0x13, 0x00); // AWB、AGC、AGC Enable and ...
wrOV7670Reg(0x6f, 0x9f); // simple AWB

// //AWBC - 自动白平衡控制(Automatic white balance control)
// // 注:用户手册里这些寄存器的值都是保留(Reserved),不用设置的呀?
// wrOV7670Reg(0x43, 0x14);
// wrOV7670Reg(0x44, 0xf0);
// wrOV7670Reg(0x45, 0x34);
// wrOV7670Reg(0x46, 0x58);
// wrOV7670Reg(0x47, 0x28);
// wrOV7670Reg(0x48, 0x3a);

// //AWB Control
// // 注:用户手册连寄存器都是保留,初始值都没提供
// wrOV7670Reg(0x59, 0x88);
// wrOV7670Reg(0x5a, 0x88);
// wrOV7670Reg(0x5b, 0x44);
// wrOV7670Reg(0x5c, 0x67);
// wrOV7670Reg(0x5d, 0x49);
// wrOV7670Reg(0x5e, 0x0e);

// //AWB Control
// wrOV7670Reg(0x6c, 0x0a);
// wrOV7670Reg(0x6d, 0x55);
// wrOV7670Reg(0x6e, 0x11);
// wrOV7670Reg(0x6f, 0x9f);

// //AGC/AEC - Automatic Gain Control自动增益补偿/Automatic exposure Control自动曝光控制
// //wrOV7670Reg(0x00, 0x00);
// //wrOV7670Reg(0x14, 0x20);
// //wrOV7670Reg(0x24, 0x75);
// //wrOV7670Reg(0x25, 0x63);
// //wrOV7670Reg(0x26, 0xA5);

// //AEC algorithm selection - AEC公式选择
wrOV7670Reg(0xaa, 0x94); // 基于平均值的AEC算法Average-based AEC algorithm/基于直方图的AEC算法Histogram-based AEC algorithm

//基于直方图的AGC/AEC的控制
// wrOV7670Reg(0x9f, 0x78);
// wrOV7670Reg(0xa0, 0x68);
// wrOV7670Reg(0xa6, 0xdf);
// wrOV7670Reg(0xa7, 0xdf);
// wrOV7670Reg(0xa8, 0xf0);
// wrOV7670Reg(0xa9, 0x90);

// //Fix Gain Control - 固定增益控制
wrOV7670Reg(0x69, 0x5d); // Fix gain for Gr channel/for Gb channel/for R channel/for B channel

// //Color saturation 颜色饱和度 + 0
// wrOV7670Reg(0x4f, 0x80);
// wrOV7670Reg(0x50, 0x80);
// wrOV7670Reg(0x51, 0x00);
// wrOV7670Reg(0x52, 0x22);
// wrOV7670Reg(0x53, 0x5e);
// wrOV7670Reg(0x54, 0x80);
// wrOV7670Reg(0x58, 0x9e);

//Brightness - 亮度 + 0
wrOV7670Reg(0x55, 0x00);

// //Contrast - 对比度 + 0
wrOV7670Reg(0x56, 0x40);

// //Gamma Curve - 伽马曲线
// wrOV7670Reg(0x7a, 0x20);
// wrOV7670Reg(0x7b, 0x1c);
// wrOV7670Reg(0x7c, 0x28);
// wrOV7670Reg(0x7d, 0x3c);
// wrOV7670Reg(0x7e, 0x55);
// wrOV7670Reg(0x7f, 0x68);
// wrOV7670Reg(0x80, 0x76);
// wrOV7670Reg(0x81, 0x80);
// wrOV7670Reg(0x82, 0x88);
// wrOV7670Reg(0x83, 0x8f);
// wrOV7670Reg(0x84, 0x96);
// wrOV7670Reg(0x85, 0xa3);
// wrOV7670Reg(0x86, 0xaf);
// wrOV7670Reg(0x87, 0xc4);
// wrOV7670Reg(0x88, 0xd7);
// wrOV7670Reg(0x89, 0xe8);

// //Matrix Coefficient - 色彩矩阵系数
// wrOV7670Reg(0x4f, 0x80);
// wrOV7670Reg(0x50, 0x80);
// wrOV7670Reg(0x51, 0x00);
// wrOV7670Reg(0x52, 0x22);
// wrOV7670Reg(0x53, 0x5e);
// wrOV7670Reg(0x54, 0x80);

//Lens Correction Option - 镜头补偿选项
// wrOV7670Reg(0x62, 0x00);
// wrOV7670Reg(0x63, 0x00);
// wrOV7670Reg(0x64, 0x04);
// wrOV7670Reg(0x65, 0x20);
// wrOV7670Reg(0x66, 0x05);
// wrOV7670Reg(0x94, 0x04); // effective only when LCC5[2] is high
// wrOV7670Reg(0x95, 0x08); // effective only when LCC5[2] is high

//注释这些配置的话,就倾斜显示,并显示多块,这到底是控制什么的?跟时序图有关?
wrOV7670Reg(0x17, 0x00); // 行频Horizontal Frame开始高八位(低三位在HREF[2:0])
wrOV7670Reg(0x18, 0x00); // 行频Horizontal Frame结束高八位(低三位在HREF[5:3])
wrOV7670Reg(0x19, 0x00); // 场频Vertical Frame开始高八位(低二位在VREF[1:0])
wrOV7670Reg(0x1a, 0x00); // 场频Vertical Frame结束高八位(低二位在VREF[3:2])
wrOV7670Reg(0x32, 0x00); // HREF
wrOV7670Reg(0x03, 0x00); // VREF

// //注释这个配置的话,就显示花屏了
wrOV7670Reg(0x15, 0x02); // 配置PCLK、HREF、VSYNC相关

// //Automatic black Level Compensation - 自动黑电平校正
wrOV7670Reg(0xb0, 0x84); // 调试时注释这项配置时,颜色显示不正常了,红色变绿色,绿色变红色,但用户手册对这寄存器是保留RSVD
wrOV7670Reg(0xb1, 0x0c);
wrOV7670Reg(0xb2, 0x0e);
wrOV7670Reg(0xb3, 0x82);
wrOV7670Reg(0xb8, 0x0a);

// //SCALING_xx寄存器
// wrOV7670Reg(0x70, 0x00);
// wrOV7670Reg(0x71, 0x00);
// wrOV7670Reg(0x72, 0x11);
// wrOV7670Reg(0x73, 0x08);
// wrOV7670Reg(0x3e, 0x00);

// //ADC
// wrOV7670Reg(0x37, 0x1d); // ADC控制ADC Control
// wrOV7670Reg(0x38, 0x71); // ADC和模拟共模控制ADC and Analog Common Mode Control
// wrOV7670Reg(0x39, 0x2a); // ADC偏移控制ADC Offset Control

// //零杂的寄存器
// wrOV7670Reg(0x92, 0x00); // 空行低八位Dummy Line low 8 bits
// wrOV7670Reg(0xa2, 0x02); // 像素时钟延时
// wrOV7670Reg(0x0c, 0x0c);
// wrOV7670Reg(0x10, 0x00);
// wrOV7670Reg(0x0d, 0x01);
// wrOV7670Reg(0x0f, 0x4b);
// wrOV7670Reg(0x3c, 0x78);
// wrOV7670Reg(0x74, 0x19);

// //用户手册里这几个寄存器都是保留RSVD
// wrOV7670Reg(0x0e, 0x61);
// wrOV7670Reg(0x16, 0x02);
// wrOV7670Reg(0x21, 0x02);
// wrOV7670Reg(0x22, 0x91);
// wrOV7670Reg(0x29, 0x07);
// wrOV7670Reg(0x33, 0x0b);
// wrOV7670Reg(0x35, 0x0b);
// wrOV7670Reg(0x4d, 0x40);
// wrOV7670Reg(0x4e, 0x20);
// wrOV7670Reg(0x8d, 0x4f);
// wrOV7670Reg(0x8e, 0x00);
// wrOV7670Reg(0x8f, 0x00);
// wrOV7670Reg(0x90, 0x00);
// wrOV7670Reg(0x91, 0x00);
// wrOV7670Reg(0x96, 0x00);
// wrOV7670Reg(0x9a, 0x80);

}
</code>

#4 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-05-27 16:09:09

Icing 说:

@与非门 你可以点开这个网站看一下 https://lvgl.io/tools/imageconverter ,图片转为bin文件的方法如图所示:/files/members/16482/screenshot-20260513-092301.png

生成bin文件采用的是lvimgtool。

#5 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-05-12 13:23:46

M3pao 说:

考虑一下C23新标准,可直接嵌入二进制文件,连编译都省了

这要编译器支持吧(另外这个应该没能解决帖子所提的问题吧)

#6 Re: Cortex M0/M3/M4/M7 » 对实时采集的数据进行平滑处理的代码,感觉不错 » 2026-04-29 11:06:27

@hotkey Kalman_Init(&kf, 1e-5, 2.5e-5, 0.0); // Q, R, 初始值 这几个初值取值有什么软件可以计算?

#7 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-28 09:23:02

Icing wrote:

移植文件系统接口lv_port_fs_template.c,用imageconverter把图片转为bin文件存入文件系统,需要用到图片的地方填入图片文件的路径就行了。比如lv_obj_set_style_bg_img_src(homepage, "F:/bg.bin", 0);

lvgl RGB565是不是支持透明?在一个容器里放了一些控件,当容器透明度设置为0,容器里的控件就都消失了

#8 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-28 09:21:05

Icing wrote:

@与非门
既然用到了文件路径,就要有文件系统。
lvgl的虚拟文件系统非常简单,只是要把fs_open、fs_close、fs_read这样的函数与真实文件系统的函数对应上。
对于spiflash的文件系统,我习惯用littlefs或romfs

littlefs/romfs,这两种的话更新图片bin文件是不是有什么格式要求?目前是采用直接读w25q64的操作。

#9 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-28 09:19:01

Icing wrote:

@与非门
既然用到了文件路径,就要有文件系统。
lvgl的虚拟文件系统非常简单,只是要把fs_open、fs_close、fs_read这样的函数与真实文件系统的函数对应上。
对于spiflash的文件系统,我习惯用littlefs或romfs

spi_flash与fs对接参考这个工程{an-lvgl_demo_for_small_mcu-masterx}。
目前在找TF卡/SD卡与fs相对接的。

#10 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-27 17:28:42

Icing wrote:

移植文件系统接口lv_port_fs_template.c,用imageconverter把图片转为bin文件存入文件系统,需要用到图片的地方填入图片文件的路径就行了。比如lv_obj_set_style_bg_img_src(homepage, "F:/bg.bin", 0);

需要修改lv-port-fs里的读写

#11 Re: ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-24 13:56:37

double33 wrote:

逐块刷新,从spi flash里读一小块数据到RAM然后刷新屏幕

怎么与lv_image_set_src()关联起来?就是用lvgl的api进行操作

#12 ST/STM8/STM8S/STM8L » 请教下,LVGL怎么读取存储在外部flash的图片数组并进行显示? » 2026-04-23 21:21:12

与非门
回复: 16

如果一张图片是1MB【对应的数组已存在spi flash里】,ram为64KB的单片机能将其显示在屏幕上吗?不考虑流畅度之类的。大概的一个操作或流程是怎么样的?

#13 Re: 全志 SOC » 这个原理图有问题吗? » 2026-03-26 17:13:21

leifeng wrote:

C23,24,25有点小,换4.7u或者10uF的试一下,另外,可以测试一下 TP1,2,3对地电阻,看看是不是负载比较大

不知道是不是主控有问题还是什么原因,目前打算重新买片主控,重新布板再试试看

#15 Re: 全志 SOC » 这个原理图有问题吗? » 2026-03-26 13:27:49

伍零壹 wrote:

C26 C27 C28电容太大了,你直接去掉应该就可以了。那3个电容是调节DC-DC的频率响应的,而你我的朋友,你这3个电容值实在太大了

实际电路是没有贴装的

#16 Re: 全志 SOC » 这个原理图有问题吗? » 2026-03-25 13:37:07

DoraemonK wrote:

试试这么接
/files/members/10181/无标题.png

那个0欧我是用来调试的,就是电源分压电阻先设定好了,电压正确了才连到芯片的。不知道是不是dcdc芯片太拉了还是什么原因,打算直接用LDO来供电试试。

#17 Re: 全志 SOC » 这个原理图有问题吗? » 2026-03-25 08:51:17

ssulg wrote:

电感用什么型号的?

立创编号 :C602029

功率电感 / 2.2uH ±20% 7.5A 编带
FHD4020S-2R2MT / SMD,4x4mm
cjiang(长江微电)

#19 全志 SOC » 这个原理图有问题吗? » 2026-03-24 11:32:57

与非门
回复: 11


上面两张图为硬件设计原理图,电源芯片采用MT3406。
在没有焊接R44、R43、R42前,对应电压(1.1 2.5v 3.3v )的输出是正常的,在焊接R44、R43、R42后对应的电压都被拉掉了,测量没有发现SOC有存在短路的问题。目前不知道是什么问题引起的。

#20 Re: 全志 SOC » V3s/S3 Linux 测试 轮询/中断 GPIO 按钮驱动程序 / 旋转编码器 等 » 2025-11-20 10:25:24

/{
gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&start_key_pin>;

start-button {
label = "Start Button";
linux,code = <KEY_L>;
gpios = <&pio 1 0 GPIO_ACTIVE_LOW>;
debounce-interval = <20>;
};
};
};
&pio {
start_key_pin: start-key-pin {
pins = "PB0";
function = "gpio_in";
bias-pull-up; // 如果按键按下时接地,需要上拉
};
};
这样为什么会报错 gpio-keys gpio-keys: failed to get gpio: -22
[ 1.445641] gpio-keys: probe of gpio-keys failed with error -22

#21 Re: 全志 SOC » 荔枝派zero全志v3s驱动SPILCD屏幕(st7789) » 2025-11-18 09:44:05

@richie
uboot dts只有 chosen {
stdout-path = "serial0:115200n8";
};

#22 Re: 全志 SOC » 荔枝派Zero V3s开发板驱动 ili9341 摆拍 » 2025-11-13 13:12:27

cat /dev/urandom > /dev/fb0 执行这个命令后,提示cat: write error: No space left on device 怎么破?
同问,另外这个屏幕是不是也要在uboot里配置之类的?还是说只在kernel里就行?手上licheepi_zero自带了一个屏还是点不亮。

#23 Re: 全志 SOC » 大家有没有遇到使用buildroot-2017.08编译host-flex 2.6.4 失败 » 2025-11-11 23:39:26

同样的问题

akefile:1696: recipe for target 'stage1scan.c' failed
make[4]: *** [stage1scan.c] 段错误 (core dumped)
Makefile:546: recipe for target 'all' failed
make[3]: *** [all] Error 2
Makefile:532: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1

#24 Re: 全志 SOC » V3S与f1c100基于最新u-boot+linux开发记录 » 2025-11-11 13:48:10

更新程序的话tf卡是不是要来回插拔啊

#25 Re: 全志 SOC » 为了V3S不吃灰,移植NES游戏 » 2025-11-06 20:18:34

焊接spi flash的话 裸机怎么写程序【从0开始】?/调试

#27 ST/STM8/STM8S/STM8L » 这段代码有问题吗? » 2025-05-29 00:10:53

与非门
回复: 0


按照设想应该是5s打印一次的。想不通是哪里的问题。STM32_407_USB_keyBoard_ok.rar
(hid键盘)代码如上。STM32F407 [PB14 PB15 USB]

#28 ST/STM8/STM8S/STM8L » stm32F407用FSMC驱动PSRAM引脚要怎么连接? » 2024-12-12 21:12:26

与非门
回复: 0


在AT32找到一个接线图,但是不是很理解为什么地址线是在锁存器的Q端?

#29 Re: ESP32/ESP8266 » ESP32S3,开发HMI真有意思,报告下功能,有图有真相: » 2024-12-09 14:57:56

串口屏的实现原理是什么?串口屏上位机生成的一生逻辑代码是怎么在esp32上运行的?(或说是怎么转化为能在esp32上运行的代码

#30 Re: ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-06 15:52:39

hexenzhou wrote:

有RGB转MIPI的转换芯片,如:LT8918!

官网提供的规格书就两页,应用起来困难

#31 Re: ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-03 21:50:47

lignin wrote:

ssd2828,可以用spi来进行mipi指令点屏

谢谢,网上有找到这个芯片,但没找到应用的例程:D

#32 Re: ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-03 21:49:09

chenyinchang wrote:

我觉得完全不可能,MIPI走的高速信号协议,单片机怎么可能驱动的了

应该会有这种需求吧

#33 Re: ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-03 17:12:03

astankvai wrote:

加MCU->MIPI的转接芯片

有推荐的型号吗?或搜索关键词呢

#34 ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-03 11:32:46

与非门
回复: 11

能通过加哪种转接芯片进行转换,或者说有没有5寸、pin脚不超过24PIN的屏幕(普通单片机可以驱动的)推荐。

#35 Re: Cortex M0/M3/M4/M7 » (求助)stm32F407驱动OV7670(没FIFO),将图像显示在显示屏上遇到的问题 » 2024-12-02 13:48:14

memory wrote:

求助帖: 自制V3s 开发板 OV2640 拍照测试 照片为全绿
https://whycan.com/t_9665.html

荔枝派跑ov2640摄像头拍图效果不好,请问怎么解决
https://whycan.com/t_9486.html

上述的帖子看了,相应的楼主并未说解决的方法,帖子中提到的虚焊,这边也量了,未出现虚焊的现象 hmm

#36 Cortex M0/M3/M4/M7 » (求助)stm32F407驱动OV7670(没FIFO),将图像显示在显示屏上遇到的问题 » 2024-12-02 12:49:58

与非门
回复: 3

问题:
1。OV7670在显示屏上显示颜色不对,正常光线下,整个画面偏绿色,这个要怎么解决?
2。单片机RAM不足的情况下,怎么将DCMI(dma方式)的数据进行搬运到普通的屏幕上,不走FSMC
3。HAL库中的DCMI_DMA需不需要每次都要调用?(drv_7670.c line 230)
4。程序中只显示一半的画面,实现显示却是两个小画面,这个是为何?(freertos.c line 174)

开发软件:
1。stm32cubeIDE

附件:
camera_F4.pdfcubeide.rar

#37 Re: 全志 SOC » F1C100S玩游戏系列-FC红白机Nes模拟器(一)-移植InfoNes到BoloRTT工程,带Audio驱动,支持声音 » 2024-07-09 17:10:44

像网上有一些stm32或ESP32移植NES的原理是什么?nes游戏是怎么在此类单片机上进行运行的?那些模拟6502的指令是依据哪些资料写出来的?

#39 Cortex M0/M3/M4/M7 » ST32L32S0140高通字库芯片有疑问。 » 2023-09-06 22:22:59

与非门
回复: 0


//***************************************************************           
		整个调用的流程:
		1) 实现r_dat_bat()等函数, spi的读写操作函数;

已按照要求实现r_dat_bat()函数及SPI驱动函数(软件模拟)
现在遇到的问题是利用函数

ASCII_GetData(*text, ASCII_8X16, FontBuf);

获取到的值与目标值不对应,实在没搞明白哪出错了

#include "font_library.h"
#include <stdio.h>
#include "at32f413_gpio.h"

void FL_Init(void)
{
	
	
	gpio_init_type boo;
	crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
	boo.gpio_drive_strength=GPIO_DRIVE_STRENGTH_STRONGER;
	boo.gpio_mode=GPIO_MODE_OUTPUT;
	boo.gpio_out_type=GPIO_OUTPUT_PUSH_PULL;
	boo.gpio_pins=GPIO_PINS_5|GPIO_PINS_7|GPIO_PINS_4;
	boo.gpio_pull=GPIO_PULL_UP;
	
	gpio_init(GPIOA,&boo);
	boo.gpio_pins=GPIO_PINS_0|GPIO_PINS_14;
	gpio_init(GPIOB,&boo);
	boo.gpio_mode=GPIO_MODE_INPUT;
	boo.gpio_pins=GPIO_PINS_6;
	gpio_init(GPIOA,&boo);
	
	FL_SCK_H();
	FL_NSS_H();
	FL_MOSI_H();

}

void FL_Deinit(void)
{
#ifdef FL_SPI_SOFT
	FL_MOSI_L();
	FL_SCK_L();
	FL_NSS_H();
#else
	HAL_SPI_DeInit(&hspi4);
	FL_NSS_H();
#endif
}

uint8_t FL_SPI_RW(uint8_t  data)
{
	#ifdef FL_SPI_SOFT
	uint8_t bit_ctr;
	for(bit_ctr=0;bit_ctr<8;bit_ctr++)  // 输出8位
	{		
		if(data&0x80){FL_MOSI_H();}
		else {FL_MOSI_L();}		
		data=(data<<1);		
		FL_SCK_L();
		data|=FL_MISO_IN();	 
		FL_SCK_H();
	}
	return data;
#else
	uint8_t Rxdata;
	HAL_SPI_TransmitReceive(&hspi4,&data,&Rxdata,1, 1000);       
	return Rxdata;          		    //返回收到的数据
#endif
}

void Send_Byte(unsigned char out)
{	
	unsigned char i=0;

	for(i=0;i<8;i++)
	{
	  FL_SCK_L();  //字库芯片时钟置低
	  if(((out<<i)&0x80)==0)
		  FL_MOSI_L();   
	  else
		  FL_MOSI_H();
	  FL_SCK_H();
  }
}
unsigned char Get_Byte(void)         
{
	unsigned char i;
	unsigned char read_dat;

	FL_SCK_H();
	for(i=0;i<8;i++)
	{
		FL_SCK_L();
		read_dat=read_dat<<1;
		if(FL_MISO_IN())				
			read_dat|=0x01;
		else
			read_dat&=0xfe;
		FL_SCK_H();
	}
	return(read_dat);
}

unsigned char r_dat_bat(unsigned long address,unsigned long byte_long,unsigned char *p_arr)
{
	unsigned long i;
	unsigned char addrHigh;
	unsigned char addrMid;
	unsigned char addrLow;
	
	addrHigh=address>>16;
	addrMid=address>>8;
	addrLow=(unsigned char)address;

	FL_NSS_L();           //片选选中字库芯片
	Send_Byte(0x03);	//普通读取首先送0X03,然后发送地址高八位addrHigh,中八位addrMid,低八位addrLow。	
	Send_Byte(addrHigh);
	Send_Byte(addrMid);
	Send_Byte(addrLow);
	for(i=0;i<byte_long;i++)
	*(p_arr+i)=Get_Byte();
	FL_NSS_H();	
	
//	FL_NSS_L();           //片选选中字库芯片
//	FL_SPI_RW(0x03);	//普通读取首先送0X03,然后发送地址高八位addrHigh,中八位addrMid,低八位addrLow。	
//	FL_SPI_RW(addrHigh);
//	FL_SPI_RW(addrMid);
//	FL_SPI_RW(addrLow);
//	for(i=0;i<byte_long;i++)
//	*(p_arr+i)=FL_SPI_RW(0xFF);
//	FL_NSS_H();	
	return 0;
}
static uint8_t  FontBuf[128]={0};
uint8_t *text="A";
int main(void)
{
  system_clock_config();

  at32_board_init();

//  button_exint_init();

	FL_Init();
  while(1)
  {
    at32_led_toggle(LED2);
    delay_ms(g_speed * DELAY);
	  
	  ASCII_GetData(*text, ASCII_8X16, FontBuf);
//    at32_led_toggle(LED3);
//    delay_ms(g_speed * DELAY);
//    at32_led_toggle(LED4);
//    delay_ms(g_speed * DELAY);
  }
}

GT32.rar

#41 Re: 全志 SOC » F1C100S原理图PCB可直接打样 » 2021-08-18 09:17:15

@Jin劲
这种芯片是不是有一些引脚是固定接特定的外设?

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发