|
前些日子作了一个项目, 它的要求资源是这样的:
1. 4路ADC 进行采样
2. 一路PWM输出
3. 一路串口
4.I2C 丛机功能
5.IO控制及指示
工作原理:
由本设备对光功率, 直流电压和射频电平进行采样处理, 其中一路完成 PWM 输出控制 optical-AGC 功能
. 同时控制三个状态指示灯, 并作相应的IO输出控制.
本机要和下面的一个 ARM9 通过 I2C 通讯, ARM9 通作 I2C 总线从本机上取回数据, 如名称,批号,
各采集值, 及工作状态等. 并能通过I2C 去改写名称和批号<生产方便> . 同时具有留有串口功能
本机上设置的参数要能保存并在下次上电后读取.
由于要求成本较低我在这里选用了 HR7P195 -20Pin 的CPU来做
1. 开始对方没有要求 I2C 的从机功能, 一路设计, 一切OK
2. 后用户增加了 I2C 从机的功能, 我们知道 I2C 速率是 100K/400K, 但用HR7P195 一个IO口的SCK最快只能
做到 10ms, 但有些信号捕捉不到,误码多, 所以放到 60~~80ms 才算稳定, 也就是 sck=9K左右
3.后来又调整了原来的中断, 中断要放在 10ms 的间隔才不影响 I2C 的读写误码
4.这个CPU的 ADC 不是很准, 采样时要舍一位, 在 1000mv 时最准, 向下到 40mv 时最大误差为 40mv, 为负误差.
向上到 3000mv 时又为正误差 , 最大为27mv, 这样在采样电压为 100mv 以下时相当的不准. 而用户要求的光功率
非常的低, 最后只能用分布点来描述进行采样
总结
1. 基本功能还是可以的,通满足设计的要求
2. 堆栈太少, 8级呀.......整不好就溢出, 所以尽量用汇编, 少用 call, 特别是 call 中 call
3. 内部要用到16M 才能满足
4. 中断设计要多多注意,在进行ADC时最好关中断
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。
如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》
|