蓝色海阳 发表于 2024-4-23 18:13:31

STC8H2K08U与STC8H8K64U的USB配置有什么不同

STC8H2K08U与STC8H8K64U的USB配置有什么不同?
为什么实验箱8.3的例程
在STC8H8K64U上测试正常,在STC8H2K08U上测试不行?
在双串口的通用例程中,

STC8H2K08U与STC8H8K64U均测试正常,但例程中按键是单个的独立按键。
能否提供一个在STC8H2K08U可以运行的,
类似实验箱8.3的例程的这种USB矩阵按键的样式例程,
最好再能带一个CDC串口(P1.0P1.1串口2)。这样就可以实现既能使用串口,又能多按键输入了的功能了,
而且STC8H2K08U相对于STC8H8K64U来说价格要低,而相对于CH340的串口芯片来说,
不但性能上可以代替,而且还多出了USB键盘的功能,希望能出一个这样的例程!

晓飛飛 发表于 2024-4-24 00:00:16

STC8H2K08U与STC8H8K64U的USB配置是相同的,只是无论从ROM还是RAM资源都有明显差别,
STC8H2K08U适合一些简单的USB接口应用,对于一些较复杂的应用,建议还是用STC8H8K64U,
不是走量的话,成本差不了多少。

乘风飞扬 发表于 2024-4-24 09:46:48

STC8H2K08U芯片脚位比较少,没有P0口,矩阵按键功能需要你自己移植。
USB配置没有什么不同的,既然独立按键例子测试正常,估计只是矩阵按键没有处理好。

蓝色海阳 发表于 2024-4-24 09:58:06

晓飛飛 发表于 2024-4-24 00:00
STC8H2K08U与STC8H8K64U的USB配置是相同的,只是无论从ROM还是RAM资源都有明显差别,
STC8H2K08U适合一些简 ...

即使用STC8H8K64U也没有我上述的例程呀?现有例程一个是USB矩阵键盘的例程,一个是符合设备:CDC串口+USB独立按键的例程。希望给出一个符合设备:CDC串口+USB矩阵键盘的例程。我也试着参考前边USB矩阵键盘的例程改了,但两个例程不是一个风格的,关于USB配置的细节上看上去有些许不同,没有修改成功。从逻辑上来说应当是给出的例程越多,越能说明芯片的功能强大,也越能促进芯片的销量呀,而不是说因为芯片销量大,才想着去做更多例程的呀。还是希望能出一个例程的,既然芯片有这个功能,就应当给出例程来让更多的人去应用呀。

小飞侠 发表于 2024-4-24 11:50:33

USB配置应该是相同的,可以再仔细检查一下程序,并且看看IO口的使用是否一致

梁工 发表于 2024-4-24 15:22:13

ROM、SRAM大小不同,其余没啥区别。

晓飛飛 发表于 2024-4-24 18:26:06

蓝色海阳 发表于 2024-4-24 09:58
即使用STC8H8K64U也没有我上述的例程呀?现有例程一个是USB矩阵键盘的例程,一个是符合设备:CDC串口+USB ...

目前需要做的例程太多了,后续一定会有这样的例程,根据独立按键例程去改矩阵键盘是没啥太大难度的,键码接入方式是一样的,只是按键检测输出键码的过程需要重写一下。

蓝色海阳 发表于 2024-4-25 10:29:08

晓飛飛 发表于 2024-4-24 18:26
目前需要做的例程太多了,后续一定会有这样的例程,根据独立按键例程去改矩阵键盘是没啥太大难度的,键码 ...

好的,其实是否为矩阵键盘都无所谓,主要是实验箱8.3的例程中含有按键状态检测的函数SendKeyStatus();会比较好用:
        while (1)
        {
                if(B_1ms)   //1ms到
                {
                        B_1ms = 0;
               
                        if(++cnt50ms >= 30)   //30ms扫描一次行列键盘
                        {
                                cnt50ms = 0;
                                KeyScan();
                        }

                        if(KeyChangeFlag)   //按键状态产生变化
                        {
                                KeyChangeFlag = 0;
                                SendKeyStatus();
                        }
                }
        }
后边再出例程的话,如果是因为外设引脚太少,没法用矩阵键盘的话,也可以是独立按键,主要希望能带上按键状态检测的函数SendKeyStatus();,我测试程序其实用的是tssop20封装的STC8H8K64U,这个也没有P0口的,我是将按键口改到了P1口,将矩阵键盘扫描改成独立按键扫描来测试的,这样测试方便一点,后边想改回矩阵键盘扫描也好改,改动部分如下:
#define KeyIO P1
......
void KeyScan(void)
{       
        KeyIO = 0xFF;
        IO_KeyDelay();
        if(KeyIO == 0xFF)//如果现在没有按键按下
        {
                NewKeyCode = 0;   //没有键按下
        }
        else//开始键盘扫描
        {
                //保存当前按键状态
                NewKeyCode = (~KeyIO) & 0xFF;
        }

        if(NewKeyCode != OldKeyCode) //判断按键是否发生了改变
        {
                KeyHoldTime = 0;         //键盘按下时间为0
                OldKeyCode = NewKeyCode;   //保存当前按键状态
                KeyChangeTemp = 1;
        }
        else
        {
                KeyHoldTime++;         //按下时间累计
                if(KeyHoldTime >= 1)       //如果按下时间足够
                {
                        KeyHoldTime = 1;
                        KeyCode = OldKeyCode;//保存按键
                        if(KeyChangeTemp)
                        {
                                KeyChangeTemp = 0;
                                KeyChangeFlag = 1;   //设置发送标志
                        }
                }
        }
}
这样对于STC8H8K64U来说,测试是正常的,但下载到STC8H2K08U上就不正常了,不知道要怎么改。而这样只测试了带按键状态检测按键程序,希望是再带一个CDC串口进去,端口希望是P1.0P1.1串口2,如果跟按键冲突的话也可以设置到P3.6P3.7串口1,希望例程能在STC8H2K08U上测试,如果硬件资源不够,至少给一个在STC8H8K64U上可以测试的例程。

蓝色海阳 发表于 2024-4-26 23:23:30

晓飛飛 发表于 2024-4-24 18:26
目前需要做的例程太多了,后续一定会有这样的例程,根据独立按键例程去改矩阵键盘是没啥太大难度的,键码 ...

目前单独的矩阵键盘和单独的CDC串口都测试没有问题了,非常期待综合例程!

电子爱好者2024 发表于 2024-5-13 16:23:09

🎉.
页: [1]
查看完整版本: STC8H2K08U与STC8H8K64U的USB配置有什么不同