|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ f. h# W/ W' m- a
void PSCInit(void)
* B, m" K& @6 u% o! Y+ K, g{
/ Q F, E2 w) w: Y0 l PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);" l! k; i/ ?: A3 t \
}* h5 @/ H- z2 K) V
5 [% K+ i3 k. G5 w! y- l
void GPIOBankPinMuxSet(void)9 w" x, @0 Y% Y, Q
{
3 K2 B* n9 @$ ]6 g$ F // DRDY ------------ GPIO6[14] -- 111) Y8 X1 n/ C) f" ~+ h5 a
// SPI1_CLK ------------ GPIO2[13] -- 466 `; M# u( I, t
// SPI1_SOMI------------ GPIO2[11] -- 44- C/ A6 y; W3 x" _+ @# Q! F) c
// SPI1_SIMO------------ GPIO2[10] -- 43
# n/ q* ~+ t' V' `4 H+ | // SPI1_CS2 ------------ GPIO1[0] -- 17
" O8 }+ ?6 K9 g$ h7 h // SPI1_CS3 ------------ GPIO1[1] -- 18
9 I( w# D9 i* V5 U" ]
1 P$ c( `. t O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% r. S; @! q/ n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 k1 f. N) {: X" k" g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);0 ^, p A' V) W
' M3 L( X# T( L: { //DRDY/ H$ _* n9 O3 ~
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 e: p! T' z. V- W
// CS2,CS3
% K7 B4 r. u; h- N GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
( ^- w+ O$ P4 r0 K+ G GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, ` ^- h0 }6 J6 H2 R
//SIMO- A: U7 `" x, I; c/ `# c! w" i
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" k" B) o) K# G; y
//SOMI
3 Q9 n+ f- \% ]" _" \( W GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, E g! e3 ~9 ~8 B8 M, \2 Q
//CLK
6 G6 d+ X( I' [5 G2 \% }* \ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" \2 i( h0 Z" ?+ O; o* e' y% u5 r+ m' D* X
// LDAC( M# Y1 o8 ^7 v5 ^9 z6 u! R( O
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
: a6 {" h' A5 d; B5 g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 Y3 t8 m1 z" }( X$ \$ n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 [% d, V/ r! \ `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS31 X* _- r; }, l" q; h0 K6 Z0 D# s
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 M' @; _9 \( g3 l}% ^: t! ]3 g( x/ ]
4 ` X5 \ F+ B3 w- [3 lint main(void)6 J- J& |: Q: |& U2 Y3 T
{- `6 b8 l- x4 O) U
// 外设使能
0 {* @+ u, {$ H) h PSCInit();+ l& e1 O9 V' ?9 ^
% v7 h* F" J8 P6 M8 R A* i$ D4 l3 n
5 D9 c2 E" S' } // 管脚复用配置
4 s9 s) \# `/ j, Q, [$ ] GPIOBankPinMuxSet();6 l# N' E& I0 y: `" Z
for(;;)
6 i3 |* y4 X- ] {* R6 J* V$ j, a/ t* \0 b
SET_SCLK();//时钟正常输出
* \- ^* k6 u% M) k* \; t: h% }0 U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, t0 ?5 r/ \# Y+ [) K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3! y1 }6 f$ y' j' T8 m8 x! I; j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' [4 A5 m1 j- m6 [% Y2 b) m4 C7 n4 {
delay(20);
* n1 {( j+ e& |" H4 \ CLR_SCLK();
+ A: X- O) J3 v% D) F! `" s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ G6 N- a. x- K- X: \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: G, k$ \3 Y' b V( {; w, |" f! v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; r# p; ?2 K) C8 x7 D
delay(20);
* T) K; z& A" O* ^' ]4 m' X }8 U5 s2 P6 i A2 I8 O+ E. c7 H6 F
}
! n. u' v$ a+ b7 C. ^ |
|