中级会员
- 积分
- 202
- 金钱
- 202
- 注册时间
- 2014-12-17
- 在线时间
- 16 小时
|
楼主 |
发表于 2017-7-15 10:40:46
|
显示全部楼层
还是大神厉害啊,谢谢xuande版主,一语中的,重新看了下数据手册,输入数据前,STR和OE都需要拉高才可以,终于调试通过了,代码不敢独享,现公布到论坛,防止其他网友走弯路!
友情提醒:这一点也需要特别注意:CP的频率和数据保持的时间,要按手册中的要求,系统频率过高的时候,需要加入一点点延时,我用的是32MHz总线fBUS,测试没有问题,再高的频率没有测试,其他网友用的时候注意即可。
/* Transform data to QP0 ~ 11*/
/* if fBUS very high , a short delay time need for datainput*/
void HEF4894_Trans(unsigned long data,unsigned char data_len)
{
unsigned long temp_data = 0;
unsigned char Trans_i = 0;
temp_data = data;
HEF4894_OE = 1; /* 输出使能 */
HEF4894_STR = 1; /* 锁存开 */
HEF4894_CP = 0; /* 时钟线0 */
HEF4894_D = 0; /* 数据输出0 */
/* trans data to the register of HEF4894 */
for(Trans_i=0;Trans_i<data_len;Trans_i++)
{
HEF4894_CP = 0;
if((temp_data & (unsigned long)0x0001) == 0)
{
HEF4894_D = 0;
}
else
{
HEF4894_D = 1;
}
HEF4894_CP = 1;
temp_data = temp_data>>1;
}
HEF4894_CP = 0; /* 时钟线0 */
HEF4894_STR = 0; /* 锁存关 */
} |
|