嵌入式开发者社区

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

作者: lmxcyx    时间: 2015-5-23 19:02
标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:! O7 t& ^' |- N2 J) E' p
void PSCInit(void)7 s& h/ A$ }% t& ^* L; n- K
{  G& j+ }) ~9 \% z* M/ \0 q
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. _$ J! t8 L  W+ A5 Z1 r}
" e# T3 w; B! d7 e6 o+ I0 @, j/ s4 S& k. U% h
void GPIOBankPinMuxSet(void)
0 Z) d1 \+ `) m1 @. \; F( }' i{
* `% _1 G8 B- o% ~& m$ p% m        // DRDY     ------------ GPIO6[14] -- 1114 ]5 F' M. C( ^5 i
        // SPI1_CLK ------------ GPIO2[13] -- 46
( y, i8 M5 c  S$ k& f, b        // SPI1_SOMI------------ GPIO2[11] -- 44
3 }/ O/ L7 M8 D7 U; r; V        // SPI1_SIMO------------ GPIO2[10] -- 437 d* D3 Q6 Z# ^# x# f( \
        // SPI1_CS2 ------------ GPIO1[0]  -- 17
& `5 l( R1 U* {; C3 o        // SPI1_CS3 ------------ GPIO1[1]  -- 18
) Z8 u; O$ S1 w9 H& |# p' T7 L! R& v: |
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* N( S( A, X3 Z; P# R- U" I& o
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 k, x- ]! k5 T* V, V! k$ g" U8 X6 [
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ F. ]1 q( r% E5 O% K4 q$ N) l9 X1 u; v2 R
        //DRDY% k* Y$ Y0 `8 Y+ i: V2 A; h
        GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT);  // GPIO6[7] DRDY% H  m) R+ U6 }
        // CS2,CS31 {) I7 t  m4 Y* o
        GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT);   // GPIO1[0] CS28 ]8 G. y6 L7 ~% A( [' B
        GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT);        // GPIO1[1]        CS30 n* D# @0 ~- }& U
        //SIMO
( B( {$ ?" _1 d0 g, \6 W        GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT);   // GPIO2[10] SIMO; K7 B9 ]) t) D8 y1 D- g) R2 L4 \
        //SOMI6 P% ^( b/ L* W6 D% B
        GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT);    // GPIO2[11] DOMI
& I$ _/ E3 q  s# v        //CLK
, ]  s# f, d7 D. b" ?3 `2 o2 w        GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT);   // GPIO2[13] CLK
1 d. y6 E1 g. r  |. K5 E( q$ h) t. T. L$ p0 a$ f
        // LDAC
( m& @8 j& z$ l' w        GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW);  // CLK! \: S1 {3 S$ E' @8 G
        GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ ~: E  J+ ^, m6 n1 b1 s6 y
        GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* _1 \8 ~$ N6 j, C5 _) \
        GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# F% e- X; \7 y' t$ z. K
        GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ r9 |8 A8 ?. M3 A% o
}9 L8 J+ p) M7 r: c0 L9 A3 S
1 R3 `" d3 i0 I% P$ R) X
int main(void)+ Q: z- @( t5 a! q
{
) E5 E" j% o% d) F        // 外设使能8 O& q/ Q3 `% N# L. H" M9 P  X: w
        PSCInit();
2 {4 e8 o/ ^  n: \, m& M/ U# S' u( Y: ]. }9 S* ^- Q, o
   
* ?0 @8 |8 E* ^4 m0 v, B" k6 a$ r: T5 f    // 管脚复用配置
. h& O' ~3 S' c$ [% I7 z* X: r- e    GPIOBankPinMuxSet();
; n  U: n6 j6 W' _2 v- n! ~    for(;;)7 {  W3 f. w8 {' \8 e' i
        {6 a5 Z4 y0 \, x( }, e, v! o
                SET_SCLK();//时钟正常输出2 O  M: F7 k! w* U, l5 L0 T
                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ i, q! G% R) g
    GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; A0 v3 {) V8 U. Z    GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 c& T) _9 z5 Z+ A
' F9 \- g) i; `; ?9 {2 ?
    delay(20);8 R* L+ M; F: D3 e
                CLR_SCLK();
2 a6 W3 e! x) ~; b                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 H. }& }& v3 e, q, x                GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" o9 `( |3 A" B& g. S! d                GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" K( @- t3 l7 G, j
                delay(20);
: i1 p/ A! V# H        }
& z7 g# H+ E6 H8 o9 c7 m9 M+ a}. ^- x! v0 y5 \% g/ x/ K% I) T

作者: Lewis    时间: 2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的- J6 ~' c% S0 k% [  F/ {





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