最近开始了一个新工程 用的是PSOC4 KIT 这块开发板 ,工程的主要功能是匹配数据帧头然后给从机下发片选信号CS和数据MOSI ,原理图和波形如下 为什么PWM输出的波形会 有问题造成解码错误 还有这个PWM 的原理是什么 为什么能产生3/4周期脉冲呢。
已解决! 转到解答。
NCO PWM 的比较值不是随便设置的,是需要计算得到的,这个比较值决定了 3/4周期位置采样点的发生时间。举例说明:
例1:Manchester 数据流为 1K 波特率,NCO PWM 的主时钟时 100KHz, 那么此时NCO PWM compare 的值 Compare Value = (100K/1K) * 0.75 = 75.
例2:Manchester 数据流为 4M 波特率,NCO PWM 的主时钟是48MHz, 那么此时NCO PWM compare 的值 Compare Value = (48M/4M) * 0.75 = 9。 但是整个数字系统的内部信号传输有一定的延时,所以综合测试之后发现 compare value = 4~8均可以得到正确的解析,最终选择中间值 6 作为 compare value.
请你按照上面的方法调整 compare value
1: 拖一个pin脚,接到PWM的line。测这个line有没有问题。
2:你这个PWM的period 配的是65535,compare是3,请确认这个地方有没有问题?
3:你这个Decode_PWM_LINE_N 信号,是怎么测的?测试的你原理图上面哪一个点?
Decode_PWM_LINE_N 对应 PWM上的LINE_N 这个3/4的原理是什么呢 没有用到campare来比较调制脉宽的方式 这个compare 调多少都不影响3/4周期的输出的
请问你要解析的 manchester 数据流的精确数据速率是多少?
NCO PWM 的比较值不是随便设置的,是需要计算得到的,这个比较值决定了 3/4周期位置采样点的发生时间。举例说明:
例1:Manchester 数据流为 1K 波特率,NCO PWM 的主时钟时 100KHz, 那么此时NCO PWM compare 的值 Compare Value = (100K/1K) * 0.75 = 75.
例2:Manchester 数据流为 4M 波特率,NCO PWM 的主时钟是48MHz, 那么此时NCO PWM compare 的值 Compare Value = (48M/4M) * 0.75 = 9。 但是整个数字系统的内部信号传输有一定的延时,所以综合测试之后发现 compare value = 4~8均可以得到正确的解析,最终选择中间值 6 作为 compare value.
请你按照上面的方法调整 compare value
你好 我要解析的数据是 5M的 那我这个PWM该怎么设置呢
我的compare值 怎么调整都对 PWM_LINE_N 出3/4周期不影响啊 ,这是我很奇怪的 一点 。我修改了以后就用逻辑分析仪去 抓波形 ,不管调成多少 对 解码时产生的 PWM_LINE_N 3/4周期 都不会影响的,所以我很好奇这个 PWM出 3/4周期的原理
不清楚这个架构能不能做到那么快的解码,建议你把NCO_CLK 改为 48MHz, 然后根据计算比较值应该设成 7左右,我估计实际设置成 3或者4应该比较好,具体看实测。
修改比较值对你的测试结果没影响的话,建议你查看一下 skip code generation 是不是设置成 TURE了
skip code generation 是在哪里
“skip code generation” 在 Project > Build Settings... > Code Generation里: