金牌会员
 
- 积分
- 2778
- 金钱
- 2778
- 注册时间
- 2015-6-1
- 在线时间
- 394 小时
|
100金钱
大约一年前来到公司,使用的芯片是LPC系列的,当时几乎没有任何资料,也没有例程作为参考,在配置I2C的时候用了很长很长的时间也没搞好,最后几乎弄好了,只差了一小步,出现了特别神奇的错误,不知道哪里的问题,反正是I2C的配置上或是传感器的使用上肯定有问题,实在找不到了,又被时间压迫,最后改用了STM32,因为代码简单,例程又多,几天时间传感器的读取和配置就全搞定了。
这期间因为原子的例程封装的太好了,我从来没有去想过I2C的时序问题。甚至不知道主频是多少,各个模块是几分频也不知道。只需要去调用读和写这几个函数,再修改一下传感器的开关等等就搞定了。当然,做LPC时我也从来没想过时序问题,虽然资料少,但我一直认为时序这些东西各个芯片都会封装好,直接用就是了。
最近一断时间,又改用了TI的芯片,在一次开会向领导提出问题时,他才知道我从来没配置过时钟,就问我:不配置时钟怎么可能做出来I2C?我说我是用大家封装好的东西,时序什么的完全不用去调。几条函数,加上适当的延时就好了,我们领导很不理解,其实我也很不理解。所以在这里想问一下调I2C的逻辑。
我的问题:
1、领导说要对着手册上的时序一点一点调,而我却没有,甚至完全不知道怎么对着手册上的时序去调。大学到现在,做单片机起码2年左右了,也没调过这些,这是我的缺失吗?还是说有些底层调时序的东西根本不用我去考虑?
2、现在新接触了一款新的芯片,又是在调I2C,我不懂时序的话,只是有一些例程,但资料多少大约介于STM32和之前用的LPC系列中间吧,不能说没有,但也不太多。我有必要去考虑配置它的时序吗?因为代码我几乎都看了一遍也不知道所谓的时序应该在哪里改。
3、有个同事说:每个模块(比如UART、I2C、DMA等等)不知道它的时钟是怎么设置的,你就不可能调好它,所谓的计好应该就是指去正常控制它。。。但是我做了这么久芯片,几乎没涉及过时钟的更改,在我看来就算改也只是一个接口,我不用去考虑它的寄存器怎么移位,也不用管它是几分频,一行代码加一行注释,想写几分频就把0x01改成个0x02就OK了。我这么理解有问题吗?
求各位大神赐教!说说你们的想法也好。
|
|