嵌入式开发者社区

标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平 [打印本页]

作者: lmxcyx    时间: 2015-5-23 19:02
标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:$ ~* ?$ i2 F- f2 c" H( H
void PSCInit(void)) k/ ?$ P5 C8 Q( @
{+ d- W+ ~) s+ B* m( ]7 X4 Q2 x
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: ]* N1 y1 `" a. g* H  J0 m6 e. j
}
; n( \' |. A5 i4 B1 V2 b; U. S7 q
% r% d! \, m; \& _. j, x$ n  Y& jvoid GPIOBankPinMuxSet(void)# E& m4 O& D* k& X1 w( M
{
- F7 U) K- ~( e1 e# W        // DRDY     ------------ GPIO6[14] -- 111
1 a3 R0 O' W, n# C* [3 W        // SPI1_CLK ------------ GPIO2[13] -- 46. a! Q) b6 |+ {0 {8 u; j: H
        // SPI1_SOMI------------ GPIO2[11] -- 449 j% E6 }1 F' R
        // SPI1_SIMO------------ GPIO2[10] -- 43
7 t# Z# I( `# t/ \        // SPI1_CS2 ------------ GPIO1[0]  -- 17
* K! y2 W: m- Y        // SPI1_CS3 ------------ GPIO1[1]  -- 186 t7 s6 A. Q& ?! S8 y

' N, i$ S% [% Y! N" O        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 h  f3 d0 @  d$ Q9 A& l        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) z# z* l2 O9 y$ @        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ t1 R8 Z9 F% P4 e# Z
" e& \2 a* K2 F9 C# U
        //DRDY
* n, p$ ?: f* @" B0 J: _! J+ t4 x        GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT);  // GPIO6[7] DRDY, o4 h% z. M. z% a) W
        // CS2,CS36 y  [  j/ p0 G2 ?8 k! b; K# V
        GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT);   // GPIO1[0] CS22 p# W( }3 I+ {) F1 y7 k; q
        GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT);        // GPIO1[1]        CS3$ f4 d& e2 B. e. H8 f
        //SIMO0 w# U; ^2 o& w; r0 E) g( T2 C5 C
        GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT);   // GPIO2[10] SIMO
& E( U! p& u2 W# P$ f- N1 Y        //SOMI# V, q/ [6 L7 x. s  M* y, }* L
        GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT);    // GPIO2[11] DOMI
1 q" n/ X! e3 k4 ?# n$ W8 }$ F        //CLK; s2 r& [3 P  }: G: ^# r
        GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT);   // GPIO2[13] CLK- D0 U* @! ^" A5 Q9 C  Y4 u
& g% Z. {' P5 p3 F9 i3 Q; H
        // LDAC
) W% F  k: p8 S$ V        GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW);  // CLK
! P" P: B- G1 V        GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 h3 d8 e' a" O
        GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 F6 h+ @  e" x' z; Z7 g: i3 \6 u
        GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS34 w5 w- e, R7 ]; e2 a/ C' R
        GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; p0 |% T; H6 L- M/ L}1 B5 O$ r1 I# c- i0 w* _2 F

  N/ j9 m+ }% j0 ^) J  G# |int main(void)
4 y5 h. p; U  e  m{
2 Y5 d/ n% [; w- P6 v! u1 Q        // 外设使能* q' Q( s! W- D$ `2 I  f
        PSCInit();: U6 o8 i1 K5 C& k

/ T, F" A$ e. ^   1 I% K' f# j" [7 H
    // 管脚复用配置
' W2 }9 z) b: S0 j5 R4 B: E    GPIOBankPinMuxSet();
, C4 J7 I& k2 a* E( W3 p( a    for(;;)
! `/ `+ O  [7 q# K3 E        {
4 l% O0 d3 x7 N: N& I& H- f; I) T3 t                SET_SCLK();//时钟正常输出
6 R7 B1 E) v& S2 e7 p# {+ w; r                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& _3 j$ N+ `5 t, E' J    GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 y: m4 `! x' w* Z    GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
* i( F2 }" p* j2 T( X: s  F+ Q
, E& d( R+ Z1 ~% P& Y' O    delay(20);
( p1 }$ b2 I; _% F0 p                CLR_SCLK();
, |" c: A) [' Q# G0 v" i( g! S                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ U2 s5 a$ C7 d  u5 ^: h                GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ E( j* x4 Q! B  W4 E                GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; J2 ~' B! k- `6 O% {                delay(20);
/ J. T. Y( E2 ^7 G; M: i        }3 b0 k5 T. E9 G; e! m6 S
}
) G) s/ o& i2 u2 Q! r1 @- A
作者: Lewis    时间: 2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的8 q# k# u4 E. F  x  _+ Q+ o6 e$ B





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4