{"comments":[{"name":"LIU DAN","content":"我想问问，就是我用STC15W4K56S4,能驱动TCD1103GFG吗？下面的是这块单片机的一些参数，目前我试了，感觉似乎驱动不成功，但是毕设选的芯片就是这块，有什么好的解决方法吗？请指教 2. 数据存储器大小：4KB（4096）； 3. 程序存储器大小：56KB； 4. 内置EEPROM大小：3KB； 5. 次单片机特点： 1. 增强型 8051 CPU，1T，单时钟/机器周期，速度比普通8051快8-12倍 2. 工作电压：2.5V – 5.5V 3. 56K字节片�Flash程序存储器，擦写次数10万次以上 4. 片内大容量4096字节 的SRAM，包括常规的256字节RAM 和内部扩展的3840字节XRAM 5. 大容量片内 EEPROM ，擦写次数10万次以上 6. ISP/IAP，在系统可编程/在应用可编程，无需编程器/仿真器 7. 共 8 通道10位高速ADC，速度可达30万次/秒，8路PWM还可当8路D/A使� 8. 6通道15位专门的高精度PWM(带死区控制) + 2通道CCP(利用它的高速脉冲输出功能可实现11~16位PWM) —-可用来再实现8路D/A，或2个16位定时器，或2个外部中断(支持上升沿/下降沿中断) 9. 6路增强型PWM 10. 内部高可靠复位，ISP编程时16级复位门槛电压可选，可彻底省掉外部复位电路 11. 工作频率范围：5MHz ~ 30MHz，相当于普通8051的60MHz～360MHz 12. 内部高精度R/C时钟(±0.3%)，±1%温飘(-40℃~+85℃)，常温下温飘±0.6%(-20℃~+65℃)，ISP编程时内部时钟从5MHz~30MHz可设(5.5296MHz / 6MHz /11.0592MHz / 12MHz /18.432MHz / 20MHz / 22.1184MHz / 24MHz / 27MHz / 30MHz) 13. 一组高速同步串行通信端口SPI.","created_timestamp":1612592640},{"name":"Zhi Zi","content":"@LIU DAN. 你好，是出于什么考虑选择了STC15W4K56S4这款芯片呢？8051架构的芯片已经有些太过时了，如果不是成本特别敏感的超大批量生产的话一般很少用，即使是考虑超低成本或者需要完全国产等特殊因素的话，也可以考虑国产的 risk-v 内核的芯片 (比如GD32等)。  TCD1103GFG 最低 clock out 速率是 0.4MHz，所以需要ADC速度最低为 0.1MSamples/s，另外存储一个周期的采样数据需要 2KB 左右的内存，如果看你的参数，应该是勉强可以驱动的，不过看起来这个芯片的内置 timer 可能通道数不够，有可能需要模拟触发时序，或者用外置时钟/PLL/时钟分配器产生 CCD 的 clock 信号，感觉会比较麻烦。","created_timestamp":1612969620},{"name":"王杰","content":"你好，可以问一下博主一个问题吗？","created_timestamp":1613822340},{"name":"Zhang","content":"作为CCD门外汉借此帖学习，烧录完程序后，最后一步“USB 线另一端插电脑上，打开任意一款 Serial Plotter 软件即可看到数据”没能实现，用的Arduino，打开串口绘图器一直显示null","created_timestamp":1620813180},{"name":"Zhang","content":"您好，CCD门外汉借此帖学习，走到烧录玩程序这一步后，插上电脑打开arduino后显示不出图形，点击串口绘图仪一直显示开发板在null不可用","created_timestamp":1620814200},{"name":"Zhi Zi","content":"@Zhang. 先检查一下串口能否正常打开，以及有没有输出，另外试一试文中附录的python程序能否看到图像。 如果还有问题，可以试试从源代码编译烧录，因为今年原版stm32芯片价格上涨了十多倍，有一些小厂stm32最小板上芯片用的是国产兼容芯片，但寄存器定义一般不太一样，因此直接烧录固件可能会出现问题","created_timestamp":1621314840},{"name":"Zhang","content":"@Zhi Zi. 这次看到曲线了，但是线条抖动很大，感觉并不是正常工作状态，不知道是不是板子接口的问题，对程序方面比较苦手，研究了两天也没啥头绪，不知道此项目的工程文件啥的是否健在","created_timestamp":1621984860},{"name":"侯启荣","content":"您好，我是一个CCD初学者，按照你给，直接烧录程序，但是不是在正常工作。研究了很久上述代码，没有什么结果。请问，您这个程序的工程文件还在吗，如果在的话，希望您分享一下，谢谢您的帮助。","created_timestamp":1622786880},{"name":"houqirong","content":"您好，请问您这个驱动程序的工程文件可以分享一下吗。我是一个CCD初学者，研究了很久您上边附带的代码，建立工程时，出现了很多问题，希望参考参考您的工程，谢谢了。","created_timestamp":1622795280},{"name":"Zhi Zi","content":"@houqirong. 你好，当时使用的工程文件应该就是一个单文件小程序，加上几个官方库文件拼接的。所有的代码都已经包含在文中了，复制下来之后直接编译应该就可以使用。  我过几天有空会试试做一个 stm32cube 的工程，到时候会放到附件中。","created_timestamp":1623450660},{"name":"LYH","content":"您好！ 我在使用此贴相同配置的时候，三路定时器都可以输出想要的波形，但是OS输出端一直为高电平，换了另外的一块芯片之后依旧是这种情况，请问您当时遇到过吗？","created_timestamp":1623822120},{"name":"Zhi Zi","content":"@LYH. 如果mcu悬空输出的时候能确认驱动时序没问题，可能是mcu引脚输出能力不足，上升/下降时间太长，可以用示波器检查一下接上ccd之后的时序是否还正确，供电是否稳定。 如果接上之后的时序也是对的，os依然没输出，那估计就是ccd已经坏了","created_timestamp":1624056300},{"name":"zuo","content":"你好，请问一下，代码是用什么软件打开呀？用Dev_C++,和keil打开是乱码呢","created_timestamp":1624600740},{"name":"符晗","content":"大佬，能留个联系方式吗，最近在弄这个CCD有点问题想请教一下","created_timestamp":1636079880},{"name":"yu","content":"@Zhi Zi. 你好，可以提供一个cube工程么？非常感谢！706331405@qq.com","created_timestamp":1639214520},{"name":"LiuCong","content":"博主你好，作为初学者向您请教，请问如何做到ICG信号由低到高时，保证φM信号位于高电平。能否详细解释一下。","created_timestamp":1643083800},{"name":"Zhi Zi","content":"@LiuCong. 你好，虽然东芝的文档中有要求ICG信号由低到高时，保证φM信号位于高电平，但实际测试之后发现似乎在什么电平都可以，影响不大，因此并没有做特殊的约束，也就是说其实这条规则被无视了。","created_timestamp":1643435640},{"name":"Chen","content":"你好，我想请教一下，在提取到CCD信号后，如何才能提取到是CCD中第几个像元信号","created_timestamp":1646097180},{"name":"lv","content":"博主您好，请问ccd的CUBE工程可以分享下吗？","created_timestamp":1646270880},{"name":"Li","content":"测试成功了，多谢博主，这博客太强了","created_timestamp":1646972400},{"name":"Zhi Zi","content":"@Chen. 你好，因为 ADC 和 CCD 的时钟是同一个时钟，所以 ADC 采集和 CCD 传出数据是同相同频的，所以确定 CCD 信号起始偏移 t 之后，第 i 个像元信号就是 DMA buffer 中内存偏移为 t+i 的值。CCD信号的起始偏移 t 则可以通过信号幅值突跃来判断。另外，CCD 输出中在开头和结尾会有几个假像元固定输出高低交替的特征信号，也是用来定位信号起始偏移的。","created_timestamp":1647329220},{"name":"Zhi Zi","content":"@lv. 你好，请看上面的评论，之前应该就是一个单文件程序，并未使用 CubeIDE，除了第三方库所有源码已经都在文中了","created_timestamp":1647329340},{"name":"Mario Liu","content":"@LYH. 您好，我和您的问题一样，请问最后您是怎么解决的？","created_timestamp":1657098480},{"name":"朱大帅","content":"我也是乱码，请问您解决了吗？","created_timestamp":1657707660},{"name":"EDMUND","content":"请问一下博主文章中的代码是什么代码，C语言吗还是别的什么，我烧录好固件打开Arduino后串口绘图器显示的线抖动很剧烈，遮盖CCD也没有什么变化，想问一下这是为什么","created_timestamp":1661073720},{"name":"Sunnypan","content":"CCD小板打样后才发现和购买的STM32F103C8T6迷你板引脚不一致，除了供电相同，其它信号脚都不一致:","created_timestamp":1663682220},{"name":"wzh","content":"@Li. 能共享一下代码，谢谢。dushichuying@hotmail.com","created_timestamp":1672655400},{"name":"CBforce","content":"哪里有10快的tcd1304dg可以买哇","created_timestamp":1681893540},{"name":"chen","content":"@Li. 你好，请问能分享一下工程吗2276827123@qq.com","created_timestamp":1684324920},{"name":"VENTRUE","content":"博主你好，我复现了这个工程，想用python读取处理光谱数据，用文中的代码尝试之后发现画图时并不是对应CCD一次读取的光强值，数据被截断了，想请问一下你是怎么处理让他每次从串口读取一个完整的数据呢？","created_timestamp":1692271020},{"name":"chen sang","content":"博主你好，我想询问一下就是关于配置完定时器后，且检测对应的波形没问题之后，在主函数里面，不断的使能TIM1跟TIM3，然后后面的那个延时这个地方有要求的吗，你代码延时的是40ms，当我使用10ms延时的时候，为什么几乎无波形，当我使用挡板挡住1/3的时候才有波形，挡住1/2的时候也无波形，当我用手挡住TCD1304传感器附件的光的时候，才有波形，我试着使用20ms效果跟10ms是一样的，使用30ms跟40ms的时候可以很明显的检测到挡板的位置，但是也有一个问题，就是我不使用手遮挡光线的时候，检测到的波形相当于方波一样，例如我使用挡板只挡住中间，跟我使用挡板挡住左边顶部一样的效果，就是方波的占空比增大了，而我使用手挡住光线的时候，他会很明显的在中间有一个有一个遮挡的凸起。就例如上面的三根导线，我不使用手遮挡的情况下，是没有波形的。  使用这个延时无非决定的是ICG的周期跟SH的周期，但是他两的占空比是不变的呀，为什么会影响到CCD采集的数据呢，日常使用的灯会对CCD采集数据造成影响吗","created_timestamp":1707632400},{"name":"98A7GADFZ879","content":"感谢大佬的入门教学，给了很大的帮助","created_timestamp":1713777420},{"name":"LISHUGUNAG","content":"@98A7GADFZ879. 博主 你好 请问文中提到的“itHub 上也发布过一个很好用的光谱 GUI 程序，见 这里，”，通过连接打开网页也没搜索到， 能否私下发一份，谢谢！ lisg_shasteel@163.com","created_timestamp":1719535560},{"name":"zouxusheng","content":"@chen sang. 你好，我也是最近开始弄这个CCD的，我本来用FPGA子自己写了下时序，结果和方波一样，然后有用了这个实例，接果还是方波，最低点时700mv左右，最高点是2.5v，不知道是为什么，请问你的问题解决了嘛，诚邀你的回复","created_timestamp":1721216580},{"name":"OHNICK","content":"感谢，很完善的指导。","created_timestamp":1726583280},{"name":"wwh","content":"您好，您的指导对我来说很有帮助，但我还有一个问题想要问一下。请问如果说我要将将积分时间调至100ms，是不是代表着SH和ICG的周期也是100ms，那么在这种情况下基于每2 μs 输出一个像素的原则，大概7.4ms就输出完所有的3694个数据，在此之后的92.6ms内os引脚是怎么输出的呢？感谢您的回复！","created_timestamp":1746757517},{"name":"young","content":"按照博主的指导使用CubeMX似乎成功复现了，只是我是开启了ADC的循环转换，只是文章中的代码没有开启，这里是否有问题呢？","created_timestamp":1749892166},{"name":"MicMic","content":"请问您这个软件应用到TCD1254也OK吧？只需要根据TCD1254的参数改下时钟设置。另外您这边有工程文件可以分享吗？","created_timestamp":1752128657},{"name":"MicMic","content":"另外我的系统是STM32G030, 计划用CubeMX来配置。\n","created_timestamp":1752128740}]}