|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
& X- R( q/ e+ I8 j3 _. hvoid PSCInit(void)
+ ^0 U! [ ]0 W; j. D# p* ^5 G{ h$ j6 n6 f) K
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" s- F# Z0 n6 a: V1 o1 J}
# U. B | U5 P6 q8 C" E" d: o9 z$ {' S1 {9 }; u7 d* D8 B
void GPIOBankPinMuxSet(void)) W2 O+ M1 w. F2 E7 L. b9 y, r1 p( k
{
Z9 [: Z! @3 \ // DRDY ------------ GPIO6[14] -- 111$ I& ^# v: D4 L6 G- a
// SPI1_CLK ------------ GPIO2[13] -- 46. _4 T" p _8 P8 Q+ w7 Z
// SPI1_SOMI------------ GPIO2[11] -- 44* p& e! D% i; ~5 _
// SPI1_SIMO------------ GPIO2[10] -- 43: n% l( E) I& v- ` |1 K p! f
// SPI1_CS2 ------------ GPIO1[0] -- 17
" ]- u+ l# H3 _$ V2 V( d! T // SPI1_CS3 ------------ GPIO1[1] -- 18
7 @+ ?' a5 W# @* f) v, r4 c/ M/ L+ v w. o; _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* \1 A6 h, p4 G' T. @: G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);0 I" G7 [* d! K. i0 l0 E- @! J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 m- d2 z/ P0 u2 K( c
4 f# _! B$ c2 [. ? //DRDY
: H6 D7 k* G9 Z6 ] GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 a/ S$ Q* Y: v& `" [
// CS2,CS3% [6 h, _$ C p3 ]( d, D# b9 ?; y
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! D4 M& i) Y4 k( |. ~; |$ P1 z: ]) O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) O; B8 @9 w' n- B1 s, R //SIMO
% H" K& x6 U; S- P GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: E1 A: @9 ] T4 L
//SOMI
, k0 T7 b J$ Y0 C) s+ {$ {3 Y* { GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! d+ C/ n" d+ t% }- C, G) [ //CLK
7 @- F9 y( X* K GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, k& d' P3 m- \4 W* }: f/ V- z" p8 _8 j8 \! V6 B
// LDAC9 @/ T8 z, M9 Y# ~8 w. {2 `
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" q3 l$ J4 [' G0 v/ [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
v8 ^- c8 N% Y( k) o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 u5 X/ t# ^" g K$ h Z3 H* E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3- V! x; v C v& r2 v! L e* D
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ i6 L+ p0 }5 s1 i! m- i
}
1 Z, i/ {, N4 J# W8 O& n; Q1 j5 a9 J0 P) R5 ?/ Q; t' @
int main(void)
4 u! u' o6 o9 N& @7 J{
9 e' u8 c$ C" E: @- p4 @ // 外设使能% g! Z+ h2 ]6 P: t9 q6 @
PSCInit();
3 v' |8 e B5 \1 C) Q" V# o4 ?
/ }( J8 g, I. E3 u( p( T
& l& o0 o3 s( g // 管脚复用配置* p# ^& n4 {- k* u6 F
GPIOBankPinMuxSet();) G+ n( L* ^8 V: U: k! |% ]' R @' B
for(;;)
" d- `9 ]$ _ d2 |+ M: w, P" H {; P8 q/ Z+ p6 A( b; F# P3 V% T
SET_SCLK();//时钟正常输出$ t2 \+ D) A" u' ?0 u* N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: A1 T% y, I4 j. q, K6 \6 M/ J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 S: \9 B. [) i' J/ s0 T5 W* Z, ]1 W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 x2 g, j0 \* \6 T; e3 F+ U2 d
' S+ f% c% X$ l5 a
delay(20);
% f' Q/ L' a! |) W6 J CLR_SCLK();
; T& \; K$ I' v! g+ a5 k# L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; ^5 B! B% L' u) ?7 _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 U6 o: V; x) E! {! v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ M. c5 N6 \2 w+ L u! X7 B1 Q delay(20);
7 l7 [- ?( F4 }6 Q7 u }
" z' x, v# S: B U+ {% Y3 O; ~}& B/ ?4 ~, z G1 ~' k
|
|