嵌入式开发者社区

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

作者: lmxcyx    时间: 2015-5-23 19:02
标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:" A) p4 l( ?& H/ m) C; ~) K# _! }3 D
void PSCInit(void)6 X9 P* k* }0 P( ]' f' L
{
3 X+ ?- p, J* e3 A0 ?% t        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. b" z* C6 ]& ~2 h! a}
, j7 s! `' d  L  j9 ?6 d- J! b( B* ?- W* r  R! m
void GPIOBankPinMuxSet(void)4 B. l, D5 M6 c4 D- r( v7 Z" K9 U
{
) l5 R' T2 @5 u# |        // DRDY     ------------ GPIO6[14] -- 111
% c% G1 J/ w7 R- T0 m9 `        // SPI1_CLK ------------ GPIO2[13] -- 463 F2 t! O& K8 f: J* k. y  f
        // SPI1_SOMI------------ GPIO2[11] -- 449 |* K  ?( u2 {& a
        // SPI1_SIMO------------ GPIO2[10] -- 43
9 O( H2 r# P8 @/ E3 c* x/ H        // SPI1_CS2 ------------ GPIO1[0]  -- 178 g2 i( L& C) X3 D# W" l; F
        // SPI1_CS3 ------------ GPIO1[1]  -- 18
6 N0 @0 \* D: ]! h& ?- f  h4 d9 P" S2 c
; B- w& ^& X; V8 M! }        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 v& \& P. B6 M4 n6 }; G( F        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 x* Z; B' O+ w/ o2 s" C; A  x1 u  j        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 Y& @+ a$ q- @& p2 U' X: R

3 ?/ e. j- P5 W$ _- Q# A        //DRDY2 K+ J" a; J$ f" Z, W
        GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT);  // GPIO6[7] DRDY
4 N1 ?: F( }( R- G$ `        // CS2,CS3. m, F  R3 z, R" N% B) R0 S6 F
        GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT);   // GPIO1[0] CS2$ b9 j) l% D$ n" ^1 ^
        GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT);        // GPIO1[1]        CS3
4 F& X5 b. Q' D! Y        //SIMO, [# w, R: F9 t/ Z
        GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT);   // GPIO2[10] SIMO; H& _% D9 a  a/ y
        //SOMI
( L% n$ a9 I9 U' \: Y4 z. ]        GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT);    // GPIO2[11] DOMI5 v/ g4 }: q: Q7 W' x# n+ J
        //CLK& h6 u- K: D: v
        GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT);   // GPIO2[13] CLK6 K0 n, z) ?' W$ x/ ^1 S; w
9 t0 g' C. q) P0 u
        // LDAC
( d+ X' N6 f1 r+ H' c        GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW);  // CLK
/ G- ?- t+ o: D1 O5 m" o1 Y3 a        GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ F0 {% Z+ j9 j: l% w) Y2 |2 H7 o        GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 a( o0 J. f1 Z1 |  d" s        GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 [9 ~0 \  q7 |' q7 u: u        GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" e! Z+ b6 h. f! x7 r& f% D
}( J6 T& i' _+ o
$ o) i& H0 e- t- R
int main(void)3 ], ^2 e, p- d! v# q+ v/ N, A
{; ]' y% m5 C9 ]" t! U, v5 E' l
        // 外设使能# o8 u, p2 e5 I- N* @( ~4 e( }
        PSCInit();
& ?$ {- h$ p4 ]5 y; R0 I8 {% o/ u2 l! S
   
, g- l! H! F# y% ^    // 管脚复用配置; y% q1 G# F6 z$ g/ X8 n/ }
    GPIOBankPinMuxSet();3 {& Q% I" }) p' a
    for(;;)
, x2 F* O9 S$ {; p$ x7 _        {4 l& G2 ^0 Z8 @1 m. `
                SET_SCLK();//时钟正常输出
! \" L' j* T2 X  _! P# U. D' l/ t                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 k( D+ r3 S; Z; a$ `6 ]# n& C) d    GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# T3 i* L+ p) r( Z    GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; t: X# `* W3 G: x" X( J; X

- O) ]! J( B) ]( ?    delay(20);2 l9 @# @0 N# P# A8 `: q' M7 M' O
                CLR_SCLK();
; \) y- R7 C+ d% o                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; b- F" r+ M* w- L: I0 T
                GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
( B& ?3 m8 X8 n3 ?+ ?                GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: w0 X9 [3 R% a- z: g                delay(20);/ F, ^' s# r& U, Q7 t
        }
% e2 S* S: F+ D! `/ b! A}
: K2 p$ X0 {# i* ^) p
作者: Lewis    时间: 2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的2 u  ^+ F; P, i9 i$ a# L4 f/ l





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